在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
Razor 是一種用於創建動態網頁的伺服器端標記語言,搭配 .NET Core 和 .NET Framework 使用。它主要與 ASP.NET Core 一起使用。Razor Pages 是 ASP.NET Core 的新特性,提供了一種整潔而簡單的方法來在應用程式中組織代碼,減少代碼重複問題。Razor 將伺服器端與 C# 或 VB 結合使用 (Visual Basic) 與 HTML 一起創建網頁內容。
本教程將指導您使用 C# 在 Visual Studio 中創建一個基本的 Razor 應用程式。讓我們開始吧。!
在我們進入Razor的世界之前,請確保已安裝以下內容:
這些都是必要的,因為它們提供我們在本教程中將使用的Razor視圖引擎和項目模板。此外,它們可以在多個操作系統上運行,這意味著無論您使用的是Windows、Linux還是macOS,您都可以跟隨本教程。
打開 Microsoft Visual Studio,並按照以下步驟操作:
點擊「檔案」>「新增」>「專案」。
在專案範本選擇畫面中,選擇「Blazor Server App」。
將您的專案命名為 "IronPDFExample" 並點擊 "建立"。
從下拉選單中選擇 ".NET 7.0" 或更高版本。
您現在有一個新的 Razor Pages 專案。
Razor 檔案使用 .cshtml
檔案擴展名,結合 C# (因而『cs』) 使用 HTML。如果我們使用的是 Visual Basic,文件擴展名會改為 .vbhtml
。
在您的方案資源管理器中,找到並打開命名為「Index.cshtml」的 .cshtml
擴展名文件。您會在這裡看到 HTML 代碼和 C# 代碼的結合。這種混合是由 Razor Parser 促成的。
Razor 語法 是HTML和伺服器的組合。伺服器端代碼是C#或VB代碼。Razor代碼用@
符號表示,並在HTML發送到客戶端之前在伺服器上執行。因此,沒有C#
一個簡單的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>
在此範例程式碼中,@DateTime.Now
是 Razor 程式碼。它在伺服器上執行,在發送到用戶端之前會被替換為當前的日期和時間。
「視圖」這個詞在Razor中對應於任何旨在向用戶展示信息的網頁。Razor View Engine負責向用戶呈現HTML頁面。
@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>
Razor 標記讓我們可以在 HTML 標記中插入伺服器端代碼。我們可以使用各種代碼構造,例如代碼塊、內聯表達式和 HTML 編碼表達式。
內聯表達式使用以下程式碼直接將結果輸出到HTML:
<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>
這裡,@Model.Name
是一個內聯表達式,從傳遞給 Razor 視圖的模型中輸出 Name 屬性的值。
代碼區塊是運行在伺服器上的代碼段落:
@{
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>
在此代碼範例中,之間的 Razor 代碼{}
是一個程式碼區塊。
我們也可以在 Razor Pages 中使用諸如 if 語句和迴圈等控制結構:
@{
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>
'}
在上述代碼範例中,if
語句是執行於伺服器的伺服器端代碼,並且其輸出會插入到結果的 HTML 頁面中。
Switch 語句是 C# 程式語言中的一種類型的條件控制結構。它們可以在程式代碼塊中使用。
@{
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"。在Razor中,您可以使用簡單的內嵌表達式來顯示 "Hello World",如下例所示:
<p>@("Hello World")</p>
<p>@("Hello World")</p>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> @("Hello World")</p>
Razor 語法允許您撰寫迴圈,例如 foreach
語句。假設您有一個名稱列表,想要在您的網頁上顯示它們。您可以利用 Razor 語法中的 foreach
語句來實現這一點。
@{
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>
'}
此 foreach
語句遍歷列表中的每個名稱並將其輸出到網頁上。
ASP.NET MVC 中的標籤助手使伺服器端代碼能夠在 Razor 文件中創建並渲染 HTML 元素。它們有點像 HTML 助手,但它們具有更像 HTML 的語法。它們將 Razor 視圖中的類似 HTML 的元素轉換為發送到客戶瀏覽器的 HTML 標記。請考慮以下關於錨點標籤助手的代碼示例:
<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Index">Home</a>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<a asp-controller="Home" asp-action="Index"> Home</a>
Razor Pages 使用處理程序方法來管理用戶互動。例如,為了處理表單提交,我們可以在對應的頁面模型文件中創建一個名為 OnPostAsync
的方法。
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
Razor也支援C#風格的註釋。請記住,Razor註釋是在伺服器端處理的,這意味著它們不會被發送到瀏覽器。它們的樣子如下
@* 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 *@
這是一個多行註釋:
@*
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. *@
Razor 視圖和頁面可以包含 HTML 註解。這些註解在傳送到瀏覽器的 HTML 輸出中是可見的。
<!-- This is an HTML comment -->
<!-- This is an HTML comment -->
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<!-- This is an HTML comment -- >
Razor允許您從服務器將模型傳遞到頁面。 @model
指令用於指定傳遞對象的類型。可以在Razor頁面中訪問此模型屬性,如下面示例所示:
@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>
IronPDF 是一個受歡迎的函式庫,允許開發者生成 從 HTML 生成 PDF,可以在 .NET 中使用圖像甚至現有的網頁。它是創建報告、發票和任何其他需要標準打印格式文件的極佳工具。IronPDF 完美運行於 ASP.NET MVC 和 ASP.NET Razor Pages 框架中。
首先,你需要安裝 IronPDF 套件。你可以在 Visual Studio 的 NuGet 套件管理器主控台執行此操作。運行以下指令:
:PackageInstall
現在,讓我們在您的 Razor 頁面中從 HTML 代碼創建一個簡單的 PDF。首先,請在 Razor 頁面的頂部導入 IronPDF 命名空間。
@using IronPdf;
@using IronPdf;
Dim IronPdf As [using]
然後,您可以使用 IronPDF 來創建 PDF。假設我們在 Razor 頁面上有一個按鈕,點擊時會創建一個簡單的 PDF。
在我們的頁面模型文件中的相應處理程序中,我們可以添加以下代碼:
@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);
}
}
@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);
}
}
Private page "/pdf" [using] IronPdf
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: 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
"btn btn-primary mt-3" onclick="CreatePDF"> Create PDF</button> </div> code
Private Friend IJSRuntime As inject
Private Property htmlString() As String
Private Async Function CreatePDF() As Task
Dim Renderer = New IronPdf.ChromePdfRenderer()
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A2
Dim doc = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
Dim Content = New DotNetStreamReference(stream:= doc.Stream)
Await JS.InvokeVoidAsync("SubmitHTML", "ironpdf.pdf", Content)
End Function
End Class
您已成功學習了Razor C#的基本知識,並了解如何整合 IronPDF 在您的應用程式中生成 PDF 文件。您從在 Visual Studio 中建立新專案開始,然後學習如何使用 Razor 語法來創建動態網頁。您還探索了如何使用 IronPDF 從 HTML 代碼生成 PDF,甚至完成 Razor 視圖。
現在,隨著您繼續構建更高級的應用程序,您可以利用 IronPDF 提供的強大功能。您可以嘗試 IronPDF 免費如果您覺得這有價值,您可以購買價格從 $749 開始的授權。