Razor modelinin sözdizimi, 2010 yılında Microsoft'u zaten sundu ve 13 Kasım 2011'de ASP.NET MVC Classic Sürüm 3'te tanıtıldı, Scott Guthrie'nin blogunda Razor Asp.net ASP.net sayfalarından yazıya bakın ve daha sonra ASP.net Core MVC ve Asp.net Core Razor'da tespit edildi. Blazor'da, yeniden kullanılabilir jilet bileşenleri için basitleştirilmiş bir modele sahip genişletilmiş bir versiyon var.
Holger Schwichtenberg, 53 ünlü uzmanla tavsiye ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.
Blazor'da kullanılan saten bileşenlerinin oluşturulması, blazor uygulamalarının dışında .NET 8.0'da da mümkündür. Web ve hibrid uygulamalar için Blazor'da kullanılan aynı sözdizimi, HTML formatında veya diğer HTML uygulama alanlarında e -mailler için HTML oluşturma için de mevcuttur.
Yeni sınıf .NET 8.0'da mevcuttur Microsoft.AspNetCore.Components.Web.HtmlRenderer Nuget paketinde Microsoft.AspNetCore.Components.Web.
Aşağıdaki örnek için, tıraş makinesinin üç bileşeni vardır. EMailTemplate.razor bağ Headline.razor VE Footer.razor Gün: <Headline> VE <Footer>. Başlığa bir parametre teslim edilir. Sayfanın eteklerinde bir jilet parçası verebilirsiniz.
Tüm stiller HTML belgesinde <style>-Tag dahil. E -Mail.Razor.css Modeli gibi açık hava tabakası dosyaları Blazor gibi otomatik olarak entegre edilmez, ancak açıkça <link rel="stylesheet" type="text/css" href="EMailTemplate.razor.css"> atıfta bulunulan. Bu, dosya sistemindeki oluşturma ile iyi çalışır, ancak e -mail ile mümkün değildir.
E -Mail.Razor Modeli'nin kodu şöyle görünüyor:
<html>
<body>
<style>
body { font-family: Arial}
</style>
<Headline Text="Terminbestätigung"></Headline>
<p>Guten Tag @Name,</p>
<p>.NET 8.0 ist am <b>@Datum.ToLongDateString()</b> erschienen.</p>
@{
var url = "https://www.IT-Visions.de";
}
@* Einbinden einer weiteren Razor-Komponente mit Child Content *@
<Footer>
<p>
Ihr Team von<br />
<a href="@url">www.IT-Visions.de</a></p>
</Footer>
</body>
</html>
@code {
[Parameter]
public string Name { get; set; }
[Parameter]
public DateTime Datum { get; set; } = new(2023, 11, 14);
}
Bu, başlığın kodudur.Razor:
@* Razor Component mit einfachem Parameter *@
<style>
.headline {
color: white;
background-color: #12B4FF;
padding: 10px;
}
</style>
<h3 class="headline">@Text</h3>
@code {
[Parameter]
public string Text { get; set; }
}
Ve footer.razor için aşağıdaki kodda görülebilir:
@* Razor Component mit Template *@
<p>Mit freundlichen Grüßen</p>
@ChildContent
@code
{
[Parameter]
public RenderFragment ChildContent { get; set; }
}
(Resim: Dmytro Vikarchuk/Shutterstock)
BetterCode Online Konferansı () .NET 9.0 of 19 Kasım 2024 IX ve dpunkt.verlag. Bu.
Bilet satışları çoktan başladı: Programın duyurulmasından önce indirimli kör kuşlar mevcuttur.
Aşağıdaki listedeki kod, konsolun bir uygulamasında e -mail yapar. Ortaya çıkan HTML belgesini konsolda geçirir, onu bir dosyaya kaydeder ve bir e -mail göndermek için kullanır:
using System.Diagnostics;
using ITVisions;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace NET8_Console;
class FCL_RazorRendering
{
public async Task Run()
{
CUI.H1(nameof(FCL_RazorRendering));
#region Vorbereiten des Renderns mit Razor Templates
IServiceCollection services = new ServiceCollection();
services.AddLogging((loggingBuilder) => loggingBuilder
.SetMinimumLevel(LogLevel.Trace)
.AddConsole()
);
IServiceProvider serviceProvider = services.BuildServiceProvider();
ILoggerFactory loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
#endregion
#region HTML Rendering using a Razor Component
// Klasse HtmlRenderer neu in .NET 8.0
await using var renderer = new HtmlRenderer(serviceProvider, loggerFactory);
var html = await renderer.Dispatcher.InvokeAsync(async () =>
{
// Parameter zusammenstellen
var name = "Dr. Holger Schwichtenberg";
CUI.Print("Parameter 'Name' = " + name);
var pdic = new Dictionary<string, object>() { { "Name", name } };
var pv = ParameterView.FromDictionary(pdic); // oder: var pv = ParameterView.Empty;
// Nun EMailTemplate.razor rendern
var output = await renderer.RenderComponentAsync<Razor_EMailTemplates.EMailTemplate>(pv);
return output.ToHtmlString();
});
#endregion
#region HTML anzeigen
CUI.H2("Gerendertes HTML");
CUI.PrintYellow(html);
#endregion
#region HTML speichern
var path = Path.GetTempFileName();
path = Path.ChangeExtension(path, ".html");
System.IO.File.AppendAllText(path, html);
// Start new Process to open the File in the default Browser
Process.Start(new ProcessStartInfo(path) { UseShellExecute = true });
#endregion
#region HTML-E-Mail senden
new ITVisions.Network.MailUtil().SendMail("[email protected]",
"empfä[email protected]",
"Terminbestätigung .NET 8.0",
html, HTML: true);
#endregion
}
}
Sınıflandırılmış HTML nasıl görünür.
(Resim: Ekran görüntüsü (Holger Schwichtenberg))
(RME)

Holger Schwichtenberg, 53 ünlü uzmanla tavsiye ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.
Blazor'da kullanılan saten bileşenlerinin oluşturulması, blazor uygulamalarının dışında .NET 8.0'da da mümkündür. Web ve hibrid uygulamalar için Blazor'da kullanılan aynı sözdizimi, HTML formatında veya diğer HTML uygulama alanlarında e -mailler için HTML oluşturma için de mevcuttur.
Yeni sınıf .NET 8.0'da mevcuttur Microsoft.AspNetCore.Components.Web.HtmlRenderer Nuget paketinde Microsoft.AspNetCore.Components.Web.
Aşağıdaki örnek için, tıraş makinesinin üç bileşeni vardır. EMailTemplate.razor bağ Headline.razor VE Footer.razor Gün: <Headline> VE <Footer>. Başlığa bir parametre teslim edilir. Sayfanın eteklerinde bir jilet parçası verebilirsiniz.
Tüm stiller HTML belgesinde <style>-Tag dahil. E -Mail.Razor.css Modeli gibi açık hava tabakası dosyaları Blazor gibi otomatik olarak entegre edilmez, ancak açıkça <link rel="stylesheet" type="text/css" href="EMailTemplate.razor.css"> atıfta bulunulan. Bu, dosya sistemindeki oluşturma ile iyi çalışır, ancak e -mail ile mümkün değildir.
E -Mail.Razor Modeli'nin kodu şöyle görünüyor:
<html>
<body>
<style>
body { font-family: Arial}
</style>
<Headline Text="Terminbestätigung"></Headline>
<p>Guten Tag @Name,</p>
<p>.NET 8.0 ist am <b>@Datum.ToLongDateString()</b> erschienen.</p>
@{
var url = "https://www.IT-Visions.de";
}
@* Einbinden einer weiteren Razor-Komponente mit Child Content *@
<Footer>
<p>
Ihr Team von<br />
<a href="@url">www.IT-Visions.de</a></p>
</Footer>
</body>
</html>
@code {
[Parameter]
public string Name { get; set; }
[Parameter]
public DateTime Datum { get; set; } = new(2023, 11, 14);
}
Bu, başlığın kodudur.Razor:
@* Razor Component mit einfachem Parameter *@
<style>
.headline {
color: white;
background-color: #12B4FF;
padding: 10px;
}
</style>
<h3 class="headline">@Text</h3>
@code {
[Parameter]
public string Text { get; set; }
}
Ve footer.razor için aşağıdaki kodda görülebilir:
@* Razor Component mit Template *@
<p>Mit freundlichen Grüßen</p>
@ChildContent
@code
{
[Parameter]
public RenderFragment ChildContent { get; set; }
}

(Resim: Dmytro Vikarchuk/Shutterstock)
BetterCode Online Konferansı () .NET 9.0 of 19 Kasım 2024 IX ve dpunkt.verlag. Bu.
Bilet satışları çoktan başladı: Programın duyurulmasından önce indirimli kör kuşlar mevcuttur.
Aşağıdaki listedeki kod, konsolun bir uygulamasında e -mail yapar. Ortaya çıkan HTML belgesini konsolda geçirir, onu bir dosyaya kaydeder ve bir e -mail göndermek için kullanır:
using System.Diagnostics;
using ITVisions;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace NET8_Console;
class FCL_RazorRendering
{
public async Task Run()
{
CUI.H1(nameof(FCL_RazorRendering));
#region Vorbereiten des Renderns mit Razor Templates
IServiceCollection services = new ServiceCollection();
services.AddLogging((loggingBuilder) => loggingBuilder
.SetMinimumLevel(LogLevel.Trace)
.AddConsole()
);
IServiceProvider serviceProvider = services.BuildServiceProvider();
ILoggerFactory loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
#endregion
#region HTML Rendering using a Razor Component
// Klasse HtmlRenderer neu in .NET 8.0
await using var renderer = new HtmlRenderer(serviceProvider, loggerFactory);
var html = await renderer.Dispatcher.InvokeAsync(async () =>
{
// Parameter zusammenstellen
var name = "Dr. Holger Schwichtenberg";
CUI.Print("Parameter 'Name' = " + name);
var pdic = new Dictionary<string, object>() { { "Name", name } };
var pv = ParameterView.FromDictionary(pdic); // oder: var pv = ParameterView.Empty;
// Nun EMailTemplate.razor rendern
var output = await renderer.RenderComponentAsync<Razor_EMailTemplates.EMailTemplate>(pv);
return output.ToHtmlString();
});
#endregion
#region HTML anzeigen
CUI.H2("Gerendertes HTML");
CUI.PrintYellow(html);
#endregion
#region HTML speichern
var path = Path.GetTempFileName();
path = Path.ChangeExtension(path, ".html");
System.IO.File.AppendAllText(path, html);
// Start new Process to open the File in the default Browser
Process.Start(new ProcessStartInfo(path) { UseShellExecute = true });
#endregion
#region HTML-E-Mail senden
new ITVisions.Network.MailUtil().SendMail("[email protected]",
"empfä[email protected]",
"Terminbestätigung .NET 8.0",
html, HTML: true);
#endregion
}
}

Sınıflandırılmış HTML nasıl görünür.
(Resim: Ekran görüntüsü (Holger Schwichtenberg))
(RME)