.NET 8.0'daki yenilikler [19]: Herhangi bir .NET uygulamasında Razor HTML oluşturma

Saberie

Active member
Microsoft, Razor desen sözdizimini 2010 yılında tanıttı ve 13 Kasım 2011'de ASP.NET MVC Classic sürüm 3'te tanıttı; Scott Guthrie'nin 3 Temmuz 2010 tarihli blog gönderisine bakın. Aynı zamanda ASP web sayfalarında da kullanılmış ve daha sonra benimsenmiştir. ASP.NET Core MVC ve ASP.NET Core Razor Sayfaları. Blazor, yeniden kullanılabilir Razor bileşenleri için basitleştirilmiş bir şablona sahip geliştirilmiş bir sürüme sahiptir.

Duyuru








Dr. Holger Schwichtenberg, 53 tanınmış uzmanıyla danışmanlık, eğitim ve yazılım geliştirme yoluyla çok sayıda orta ve büyük ölçekli şirketi destekleyen www.IT-Visions.de uzman ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası konferansa katılımı, 90'dan fazla uzmanlık kitabı ve 1.500'den fazla uzmanlık makalesi sayesinde Holger Schwichtenberg, .NET ve web teknolojileri konusunda Almanya'nın en tanınmış uzmanlarından biridir.







Blazor'da kullanılan Razor bileşenlerinin oluşturulması, .NET 8.0'daki Blazor uygulamalarının dışında da mümkündür. Bu, Blazor'da web ve hibrit uygulamalar için kullanılan aynı sözdiziminin artık HTML e-postaları veya diğer HTML uygulamaları için HTML oluşturma için de mevcut olduğu anlamına gelir.

.NET 8.0'da bunun için yeni bir sınıf var Microsoft.AspNetCore.Components.Web.HtmlRenderer NuGet paketinde Microsoft.AspNetCore.Components.Web.

Aşağıdaki örnekte başlangıçta üç Razor bileşeni vardır. EMailTemplate.razor bağlar Headline.razor VE Footer.razor etiket aracılığıyla: <Headline> VE <Footer>. Başlık için bir parametre iletilir. Sayfanın alt kısmında bir ustura parçasını teslim edebilirsiniz.

Tüm stiller HTML belgesindedir <style>-Etiketler dahil. EMailTemplate.razor.css gibi harici stil sayfası dosyaları Blazor gibi otomatik olarak entegre edilmez, ancak aracılığıyla açıkça gönderilmelidir. <link rel="stylesheet" type="text/css" href="EMailTemplate.razor.css"> referans alın. Bu, dosya sistemine dönüştürülürken iyi çalışır, ancak e-postalar için mümkün değildir.

EMailTemplate.razor kodu şuna benzer:


<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);
}



Headline.razor'un kodu budur:


@* 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; }
}



Footer.razor'un kodu aşağıdadır:


@* Razor Component mit Template *@

<p>Mit freundlichen Grüßen</p>
@ChildContent

@code
{
[Parameter]
public RenderFragment ChildContent { get; set; }
}







(Resim: Dmytro Vikarchuk/Shutterstock)


iX ve dpunkt.verlag tarafından 19 Kasım 2024'te düzenlenecek BetterCode() .NET 9.0 çevrimiçi konferansında, www.IT-Visions.de adresindeki .NET uzmanları pratik örnekler kullanarak .NET 9.0'ın son sürümünü sunacaklar. Bunlar arasında .NET 9.0 SDK, C# 13.0, ASP.NET Core 9.0, Blazor 9.0, Entity Framework Core 9.0 ile OR eşlemesi, Windows Forms 9.0, WPF 9.0, WinUI, .NET MAUI 9.0 ile platformlar arası geliştirme ve bir perspektif yer alıyor. .NET 10.0'da.

Bilet satışları başladı bile; indirimli kör kuş biletleri program duyurusu öncesinde satışa sunuldu.







Aşağıdaki listedeki kod, e-postayı bir konsol uygulamasında işler. Ortaya çıkan HTML belgesini konsola gönderin, bir dosyaya kaydedin ve e-posta göndermek için kullanın:


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
}
}








İşlenen HTML böyle görünüyor.


(Resim: Ekran görüntüsü (Holger Schwichtenberg))




(kendim)



Haberin Sonu
 
Üst