Razor C# (jak to działa dla programistów)
Razor to język znaczników po stronie serwera używany do tworzenia dynamicznych stron internetowych przy użyciu .NET Core i .NET Framework. Jest używany głównie w połączeniu z ASP.NET Core. Razor Pages to nowa funkcja .NET Core, która zapewnia przejrzysty i prosty sposób organizowania kodu w aplikacjach, ograniczając problem powielania kodu. Razor łączy programowanie po stronie serwera w języku C# lub VB (Visual Basic) z HTML w celu tworzenia treści internetowych.
Ten samouczek poprowadzi Cię przez proces tworzenia podstawowej aplikacji przy użyciu Razor z językiem C# w Visual Studio. Zaczynamy!
Wymagania wstępne
Zanim zagłębimy się w świat Razor, upewnij się, że masz zainstalowane następujące elementy:
- .NET Core SDK
- Visual Studio
Są one niezbędne, ponieważ zapewniają silnik widoków Razor oraz szablony projektów, których będziemy używać w tym samouczku. Ponadto mogą one działać na wielu systemach operacyjnych, co oznacza, że możesz z nich korzystać niezależnie od tego, czy używasz systemu Windows, Linux czy macOS.
Krok 1 Tworzenie nowego projektu Razor Pages
Otwórz program Microsoft Visual Studio i wykonaj następujące czynności:
- Kliknij "Plik" > "Nowy" > "Projekt".
-
Na ekranie wyboru szablonu projektu wybierz "Blazor Server App".

-
Nazwij swój projekt "IronPDFExample" i kliknij "Utwórz".

-
Wybierz ".NET 7.0" lub nowszą wersję z listy rozwijanej.

Masz teraz nowy projekt Razor Pages.
Zrozumienie składni i plików Razor
Pliki Razor mają rozszerzenie .cshtml i łączą język C# (stąd "cs") z HTML. Gdybyśmy używali języka Visual Basic, rozszerzenie pliku zmieniłoby się na .vbhtml.
W oknie Solution Explorer znajdź i otwórz plik rozszerzenia .cshtml o nazwie "Index.cshtml". W tym miejscu zobaczysz połączenie kodu HTML i kodu C#. Takie połączenie jest możliwe dzięki Razor Parser.
Składnia Razor
Składnia Razor w .NET Core stanowi połączenie kodu HTML i kodu po stronie serwera. Kod serwera jest napisany w języku C# lub VB. Kod Razor jest oznaczony symbolem @ i jest wykonywany na serwerze przed wysłaniem kodu HTML do klienta.
Przykład prostej składni Razor:
<p>The current time is @DateTime.Now</p>
<p>The current time is @DateTime.Now</p>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> The current time is @DateTime.Now</p>
W tym przykładzie kodu @DateTime.Now jest kodem Razor. Jest wykonywany na serwerze, a przed wysłaniem do klienta zastępowany jest aktualną datą i godziną.
Widok Razor
Termin "widok" w Razorze odnosi się do dowolnej strony internetowej, której celem jest przedstawienie informacji użytkownikowi. Silnik Razor View Engine odpowiada za renderowanie strony HTML dla użytkownika.
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
page model ReadOnly Property () As IndexModel
ViewData("Title") = "Home page"
End Property
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<div class="text-center"> <h1 class="display-4"> Welcome</h1> <p> Learn about <a href="https://docs.microsoft.com/aspnet/core"> building Web apps @with ASP.NET Core</a>.</p> </div>
Wykorzystanie znaczników Razor do tworzenia treści dynamicznych
Razor Markup pozwala nam wstawiać kod po stronie serwera do naszego znacznika HTML. Możemy używać różnych konstrukcji kodu, takich jak bloki kodu, wyrażenia wbudowane i wyrażenia zakodowane w HTML.
Wyrażenie w tekście
Wyrażenie wbudowane wysyła wynik bezpośrednio do kodu HTML przy użyciu następującego kodu:
<p>Hello, my name is @Model.Name</p>
<p>Hello, my name is @Model.Name</p>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> Hello, my name is @Model.Name</p>
W tym przypadku @Model.Name jest wyrażeniem wbudowanym, które wyświetla wartość właściwości Name z modelu przekazanego do widoku Razor.
Blok kodu
Bloki kodu to fragmenty kodu wykonywane na serwerze:
@{
var name = "IronPDF";
}
<p>Hello, my name is @name</p>
@{
var name = "IronPDF";
}
<p>Hello, my name is @name</p>
@
If True Then
Dim name = "IronPDF"
End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> Hello, my name is @name</p>
W tym przykładzie kodu fragment kodu Razor pomiędzy znacznikami { } stanowi blok kodu.
Struktury kontrolne
W naszych stronach Razor możemy również używać struktur kontrolnych, takich jak instrukcje if i pętle:
@{
var count = 5;
}
@if (count > 3)
{
<p>The count is greater than 3.</p>
}
@{
var count = 5;
}
@if (count > 3)
{
<p>The count is greater than 3.</p>
}
@
If True Then
Dim count = 5
End If
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@if(count > 3)
'{
' <p> The count is greater than 3.</p>
'}
W powyższym przykładzie kodu instrukcja if jest częścią kodu po stronie serwera, który działa na serwerze, a jej wynik jest wstawiany do wynikowej strony HTML.
Instrukcja switch
Instrukcje switch są rodzajem warunkowej struktury sterującej w języku programowania C#. Można je stosować w blokach kodu.
@{
var fileFormat = "PDF";
var message = "";
switch (fileFormat)
{
case "PDF":
message = "You selected PDF.";
break;
default:
message = "Invalid selection.";
break;
}
}
<p>@message</p>
@{
var fileFormat = "PDF";
var message = "";
switch (fileFormat)
{
case "PDF":
message = "You selected PDF.";
break;
default:
message = "Invalid selection.";
break;
}
}
<p>@message</p>
@
If True Then
Dim fileFormat = "PDF"
Dim message = ""
Select Case fileFormat
Case "PDF"
message = "You selected PDF."
Case Else
message = "Invalid selection."
End Select
End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> @message</p>
Hello World w Razor
Jednym z najprostszych programów w każdym języku programowania jest "Hello World". W Razorze można wyświetlić "Hello World" za pomocą prostego wyrażenia wbudowanego, jak pokazano w poniższym przykładzie:
<p>@("Hello World")</p>
<p>@("Hello World")</p>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> @("Hello World")</p>
Pętle w Razor
Składnia Razor pozwala na pisanie pętli, takich jak instrukcja foreach. Załóżmy, że masz listę nazw, które chcesz wyświetlić na swojej stronie internetowej. Można to osiągnąć za pomocą instrukcji foreach w składni Razor.
@{
var names = new List<string> { "John", "Doe", "Smith" };
}
@foreach (var name in names)
{
<p>@name</p>
}
@{
var names = new List<string> { "John", "Doe", "Smith" };
}
@foreach (var name in names)
{
<p>@name</p>
}
@
If True Then
Dim names = New List(Of String) From {"John", "Doe", "Smith"}
End If
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@foreach(var name in names)
'{
' <p> @name</p>
'}
Ta instrukcja foreach przechodzi cyklicznie przez każdą nazwę na liście i wyświetla ją na stronie internetowej.
Zrozumienie pomocników tagów
Pomocniki tagów w ASP.NET MVC umożliwiają kodowi po stronie serwera tworzenie i renderowanie elementów HTML w plikach Razor. Są one nieco podobne do pomocników HTML, ale mają składnię bardziej zbliżoną do HTML. Przekształcają one elementy podobne do HTML w widokach Razor w znaczniki HTML wysyłane do przeglądarki klienta. Rozważmy następujący przykład kodu pomocnika tagu anchor:
<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Index">Home</a>
Obsługa interakcji z użytkownikiem
Razor Pages wykorzystuje metody obsługi do zarządzania interakcjami użytkownika. Na przykład, aby obsłużyć przesyłanie formularza, możemy utworzyć metodę o nazwie OnPostAsync w odpowiednim pliku modelu strony naszej strony Razor.
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
// Perform some operation here
return RedirectToPage("./Index");
}
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
// Perform some operation here
return RedirectToPage("./Index");
}
Public Async Function OnPostAsync() As Task(Of IActionResult)
If Not ModelState.IsValid Then
Return Page()
End If
' Perform some operation here
Return RedirectToPage("./Index")
End Function
Komentarze w Razor
Razor obsługuje również komentarze w stylu C#. Należy pamiętać, że komentarze Razor są po stronie serwera, co oznacza, że nie są wysyłane do przeglądarki. Wyglądają one następująco:
@* This is a Razor comment *@
@* This is a Razor comment *@
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@* This is a Razor comment *@
A to jest komentarz wielowierszowy:
@*
This is a multi-line Razor comment.
It's useful when you have a lot to say.
*@
@*
This is a multi-line Razor comment.
It's useful when you have a lot to say.
*@
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@* This is a multi-line Razor comment.It's useful @when you have a lot @to say. *@
Widoki i strony Razor mogą zawierać komentarze HTML. Komentarze te są widoczne w kodzie HTML wysyłanym do przeglądarki.
Przekazywanie modeli do strony Razor
Razor umożliwia przekazywanie modeli na stronę z serwera. Dyrektywa @model służy do określenia typu przekazywanego obiektu. Dostęp do tej właściwości modelu można uzyskać na stronie Razor, jak pokazano w poniższym przykładzie:
@page
@model ExampleModel
<h2>@Model.Title</h2>
<p>@Model.Description</p>
@page
@model ExampleModel
<h2>@Model.Title</h2>
<p>@Model.Description</p>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@page @model ExampleModel <h2> @Model.Title</h2> <p> @Model.Description</p>
Generowanie plików PDF za pomocą IronPDF w Razor
Discover IronPDF for .NET to popularna biblioteka, która pozwala programistom generować pliki PDF z HTML, obrazów, a nawet istniejących stron internetowych w środowisku .NET. Jest to doskonałe narzędzie do tworzenia raportów, faktur i wszelkich innych dokumentów, w których wymagany jest standardowy format wydruku. IronPDF działa idealnie w ramach frameworków ASP.NET MVC i ASP.NET Razor Pages.
Instalacja
Najpierw należy zainstalować pakiet IronPDF. Można to zrobić z poziomu konsoli menedżera pakietów NuGet w programie Visual Studio. Uruchom następujące polecenie:
Install-Package IronPdf
Tworzenie prostego pliku PDF
Teraz stwórzmy prosty plik PDF z kodu HTML w ramach strony Razor. Najpierw zaimportujmy przestrzeń nazw IronPDF na początku strony Razor.
@using IronPdf;
@using IronPdf;
Dim IronPdf As [using]
Następnie można użyć IronPDF do utworzenia pliku PDF. Załóżmy, że na naszej stronie Razor mamy przycisk, który po kliknięciu tworzy prosty plik PDF.
W odpowiednim handlerze w naszym pliku Page Model możemy dodać następujący kod:
@page "/pdf"
@using IronPdf;
@inject IJSRuntime JS
<PageTitle>Create PDF</PageTitle>
<h1>Create PDF</h1>
<div class="form-outline">
<button class="btn btn-primary mt-3" @onclick="CreatePDF">Create PDF</button>
</div>
@code {
private string htmlString { get; set; }
private async Task CreatePDF()
{
var Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A2;
var doc = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
using var Content = new DotNetStreamReference(stream: doc.Stream);
await JS.InvokeVoidAsync("SubmitHTML", "ironpdf.pdf", Content);
}
}
WYNIK


Wnioski
Pomyślnie opanowałeś podstawy Razor C# i dowiedziałeś się, jak zintegrować IronPDF w celu generowania plików PDF w ramach swojej aplikacji. Zacząłeś od utworzenia nowego projektu w Visual Studio, a następnie nauczyłeś się, jak używać składni Razor do tworzenia dynamicznych stron internetowych. Omówiono również, w jaki sposób IronPDF może być wykorzystywany do generowania plików PDF z kodu HTML, a nawet kompletnych widoków Razor.
Teraz, tworząc coraz bardziej zaawansowane aplikacje, możesz korzystać z potężnych funkcji oferowanych przez IronPDF. Możesz wypróbować IronPDF za darmo, a jeśli uznasz, że jest przydatny, możesz kupić licencję dostosowaną do swoich potrzeb.
Często Zadawane Pytania
Jak moge generowac PDFy z HTML przy uzyciu Razor w C#?
Mozesz generowac PDFy z HTML przy uzyciu Razor w C# uzywajac biblioteki IronPDF. Najpierw zainstaluj pakiet IronPDF, zaimportuj przestrzen nazw IronPDF, a nastepnie uzyj metod API takich jak RenderHtmlAsPdf, aby przeksztalcic tresc HTML do formatu PDF.
Jaka role odgrywa skladnia Razor w tworzeniu stron internetowych?
Skladnia Razor odgrywa kluczowa role w tworzeniu stron internetowych poprzez laczenie C# lub VB z HTML, aby tworzyc dynamiczne strony. Umozliwia programistom pisanie kodu po stronie serwera, ktory jest wykonywany przed wyslaniem HTML do przegladarki klienta, umozliwiajac plynna integracje i funkcjonalnosc.
Jak stronice Razor ulepszaja tworzenie aplikacji internetowych?
Stronice Razor ulepszaja tworzenie aplikacji internetowych poprzez zapewnienie ustrukturyzowanego sposobu zarzadzania kodem, redukujacego powielanie i zlozonosc. Upraszczaja proces tworzenia, pozwalajac programistom skupic sie na budowaniu funkcjonalnosci w formacie opartym na stronicach.
Czym sa Tag Helpers i jak wspomagaja je w stronach Razor?
Tag Helpers w stronach Razor wspomagaja przez umozliwienie kodu po stronie serwera tworzenia i renderowania elementow HTML za pomoca skladni przypominajacej HTML. Pomaga to w tworzeniu czystego i latwego w utrzymaniu HTML przez przeksztalcanie elementow na serwerze przed ich wyslaniem do przegladarki klienta.
Jak moge obslugiwac interakcje uzytkownika w stronach Razor?
Interakcje uzytkownika w stronach Razor sa zarzadzane za pomoca metod obslugi, takich jak OnPostAsync. Te metody przetwarzaja formularze i inne dane wejsciowe uzytkownikow, pozwalajac programistom wykonywac operacje na podstawie danych otrzymanych od klientow.
Jakie znaczenie ma dyrektywa '@model' w Razor?
Dyrektywa '@model' w Razor ma znaczenie, poniewaz specyfikuje typ danych obiektu przekazywanego do strony Razor. Umozliwia to programistom dostep i manipulacje wlasnosciami modelu bezposrednio na stronie, wspierajac wiazanie danych i interakcje.
Jakie sa korzysci z uzywania Razor z C# w Visual Studio?
Uzywanie Razor z C# w Visual Studio oferuje korzysci, takie jak integracja logiki po stronie serwera z HTML, uproszczenie tworzenia aplikacji przez stronice Razor oraz mozliwosc latwego generowania dynamicznej tresci internetowej. Dodatkowo, Visual Studio dostarcza solidne narzedzia i szablony wspierajace rozwoj Razor.
Czy moge uzywac skladni Razor dla zarowno C# jak i VB?
Tak, skladni Razor mozna uzywac z zarowno C# jak i VB (Visual Basic) do laczenia logiki po stronie serwera z HTML. Ta elastycznosc pozwala programistom wybrac preferowany jezyk, jednoczesnie korzystajac z mozliwosci Razor w tworzeniu stron internetowych.




