.NET 幫助

Razor C#(開發者如何運作)

發佈 2023年5月30日
分享:

Razor 是一種用於創建動態網頁的伺服器端標記語言,搭配 .NET Core 和 .NET Framework 使用。它主要與 ASP.NET Core 一起使用。Razor Pages 是 ASP.NET Core 的新特性,提供了一種整潔而簡單的方法來在應用程式中組織代碼,減少代碼重複問題。Razor 將伺服器端與 C# 或 VB 結合使用 (Visual Basic) 與 HTML 一起創建網頁內容。

本教程將指導您使用 C# 在 Visual Studio 中創建一個基本的 Razor 應用程式。讓我們開始吧。!

先決條件

在我們進入Razor的世界之前,請確保已安裝以下內容:

  1. .NET Core SDK
  2. Visual Studio

這些都是必要的,因為它們提供我們在本教程中將使用的Razor視圖引擎和項目模板。此外,它們可以在多個操作系統上運行,這意味著無論您使用的是Windows、Linux還是macOS,您都可以跟隨本教程。

第一步 創建一個新的 Razor Pages 專案

打開 Microsoft Visual Studio,並按照以下步驟操作:

  1. 點擊「檔案」>「新增」>「專案」。

  2. 在專案範本選擇畫面中,選擇「Blazor Server App」。

    Razor C#(如何對開發者運作)圖 1

  3. 將您的專案命名為 "IronPDFExample" 並點擊 "建立"。

    Razor C#(適用於開發者的運作方式)圖2

  4. 從下拉選單中選擇 ".NET 7.0" 或更高版本。

    Razor C#(它如何為開發人員工作)圖 3

您現在有一個新的 Razor Pages 專案。

理解 Razor 語法和檔案

Razor 檔案使用 .cshtml 檔案擴展名,結合 C# (因而『cs』) 使用 HTML。如果我們使用的是 Visual Basic,文件擴展名會改為 .vbhtml

在您的方案資源管理器中,找到並打開命名為「Index.cshtml」的 .cshtml 擴展名文件。您會在這裡看到 HTML 代碼和 C# 代碼的結合。這種混合是由 Razor Parser 促成的。

Razor 語法

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>
VB   C#

在此範例程式碼中,@DateTime.Now 是 Razor 程式碼。它在伺服器上執行,在發送到用戶端之前會被替換為當前的日期和時間。

Razor View

「視圖」這個詞在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>
VB   C#

使用 Razor 標記建立動態內容

Razor 標記讓我們可以在 HTML 標記中插入伺服器端代碼。我們可以使用各種代碼構造,例如代碼塊、內聯表達式和 HTML 編碼表達式。

Inline Expression

內聯表達式使用以下程式碼直接將結果輸出到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>
VB   C#

這裡,@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>
VB   C#

在此代碼範例中,之間的 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>
'}
VB   C#

在上述代碼範例中,if 語句是執行於伺服器的伺服器端代碼,並且其輸出會插入到結果的 HTML 頁面中。

Switch 語句

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>
VB   C#

Razor中的Hello World

在任何程式語言中,最簡單的程式之一就是 "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>
VB   C#

Razor 中的迴圈

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>
'}
VB   C#

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>
VB   C#

處理用戶互動

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
VB   C#

Razor中的註釋

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 *@
VB   C#

這是一個多行註釋:

@*
    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. *@
VB   C#

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 -- >
VB   C#

將模型傳遞給Razor頁面

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>
VB   C#

使用 IronPDF 在 Razor 中生成 PDF

IronPDF 是一個受歡迎的函式庫,允許開發者生成 從 HTML 生成 PDF,可以在 .NET 中使用圖像甚至現有的網頁。它是創建報告、發票和任何其他需要標準打印格式文件的極佳工具。IronPDF 完美運行於 ASP.NET MVC 和 ASP.NET Razor Pages 框架中。

安裝

首先,你需要安裝 IronPDF 套件。你可以在 Visual Studio 的 NuGet 套件管理器主控台執行此操作。運行以下指令:

:PackageInstall

建立簡單的 PDF

現在,讓我們在您的 Razor 頁面中從 HTML 代碼創建一個簡單的 PDF。首先,請在 Razor 頁面的頂部導入 IronPDF 命名空間。

@using IronPdf;
@using IronPdf;
Dim IronPdf As [using]
VB   C#

然後,您可以使用 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
VB   C#

輸出

Razor C#(它如何為開發人員運作)圖4

Razor C#(開發人員操作說明)圖 5

結論

您已成功學習了Razor C#的基本知識,並了解如何整合 IronPDF 在您的應用程式中生成 PDF 文件。您從在 Visual Studio 中建立新專案開始,然後學習如何使用 Razor 語法來創建動態網頁。您還探索了如何使用 IronPDF 從 HTML 代碼生成 PDF,甚至完成 Razor 視圖。

現在,隨著您繼續構建更高級的應用程序,您可以利用 IronPDF 提供的強大功能。您可以嘗試 IronPDF 免費如果您覺得這有價值,您可以購買價格從 $749 開始的授權。

< 上一頁
適用 Windows 的 Vim (開發人員的操作方式)
下一個 >
C# 等待秒數(開發人員如何操作)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >