跳過到頁腳內容
.NET幫助

Razor C#(開發者的工作原理)

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

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

先決條件

在深入Razor的世界之前,確保您已安裝以下內容:

  1. .NET Core SDK
  2. Visual Studio

這些是必須的,因為它們提供了Razor View Engine和我們將用於本教程的項目範本。 此外,它們可以在多個操作系統上運行,這意味著無論您使用的是Windows、Linux還是macOS,您都可以跟隨學習。

步驟1 創建一個新的Razor Pages項目

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

  1. 單擊"文件">"新建">"項目"。
  2. 在項目範本選擇屏幕中,選擇"Blazor Server應用"。

    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語法

ASP.NET Core中的Razor語法是HTML和伺服器端代碼的結合。 伺服器代碼是C#或VB代碼。 Razor代碼以@符號標識,在HTML發送到客戶端之前在伺服器上執行。

簡單Razor語法的例子:

<p>The current time is @DateTime.Now</p>
<p>The current time is @DateTime.Now</p>
$vbLabelText   $csharpLabel

在此代碼示例中,@DateTime.Now是Razor代碼。 它在伺服器上執行,替換為當前日期和時間,然後發送到客戶端。

Razor View

Razor中的"View"對應於任何旨在向用戶呈現信息的網頁。 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>
$vbLabelText   $csharpLabel

使用Razor標記創建動態內容

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

內嵌表達式

內嵌表達式直接將結果輸出到HTML中,使用以下代碼:

<p>Hello, my name is @Model.Name</p>
<p>Hello, my name is @Model.Name</p>
$vbLabelText   $csharpLabel

在此處,@Model.Name是一個內嵌表達式,輸出從傳遞到Razor視圖的模型中的Name屬性的值。

代碼塊

代碼塊是在伺服器上運行的代碼段:

@{
    var name = "IronPDF";
}
<p>Hello, my name is @name</p>
@{
    var name = "IronPDF";
}
<p>Hello, my name is @name</p>
$vbLabelText   $csharpLabel

在此代碼示例中,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>
}
$vbLabelText   $csharpLabel

在上述代碼示例中,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>
$vbLabelText   $csharpLabel

Razor中的Hello World

在任何編程語言中的最簡單程序之一是"Hello World"。 在Razor中,您可以使用一個簡單的內嵌表達式顯示"Hello World",如下例所示:

<p>@("Hello World")</p>
<p>@("Hello World")</p>
$vbLabelText   $csharpLabel

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>
}
$vbLabelText   $csharpLabel

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

處理用戶交互

Razor Pages使用處理程序方法來管理用戶交互。 例如,為了處理表單提交,我們可以在Razor Page的對應"Page Model"文件中創建一個名為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");
}
$vbLabelText   $csharpLabel

Razor註釋

Razor也支持C#風格的註釋。 請記住,Razor註釋是伺服器端的,這意味著它們不會發送到瀏覽器。 它們的樣子如下:

@* This is a Razor comment *@
@* This is a Razor comment *@
$vbLabelText   $csharpLabel

而這是一個多行註釋:

@*
    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.
*@
$vbLabelText   $csharpLabel

Razor視圖和頁面可以包含HTML註釋。 這些註釋在發送到瀏覽器的HTML輸出中可見。

HTML

將模型傳遞到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>
$vbLabelText   $csharpLabel

使用IronPDF在Razor中生成PDF

了解IronPDF for .NET 是一個受歡迎的程式庫,可以讓開發者從HTML、圖片,甚至現有的.NET網頁中生成PDF。 它是創建報告、發票以及任何需要標準打印格式的文件的極好工具。 IronPDF在ASP.NET MVC和ASP.NET Razor Pages框架中運行完美。

安裝

首先,您需要安裝IronPDF套件。 您可以從Visual Studio中的NuGet套件管理器控制台中執行此操作。 運行以下命令:

Install-Package IronPdf

創建一個簡單的PDF

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

@using IronPdf;
@using IronPdf;
$vbLabelText   $csharpLabel

然後,您可以使用IronPDF創建一個PDF。 假設我們的Razor頁面上有一個按鈕,點擊時將創建一個簡單的PDF。

在我們Page Model文件中的對應處理程序中,我們可以添加以下代碼:

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

輸出

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

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

結論

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

現在,當您繼續構建更高級的應用程式時,您可以利用IronPDF提供的強大功能。 您可以免費試用IronPDF,如果您覺得有價值,可以選擇購買適合您需求的授權。

常見問題解答

如何在 C# 中使用 Razor 從 HTML 生成 PDF?

您可以通過使用 IronPDF 庫在 C# 中使用 Razor 從 HTML 生成 PDF。首先,安裝 IronPDF 套件,導入 IronPDF 命名空間,然後使用其 API 方法如 RenderHtmlAsPdf 將您的 HTML 內容轉換為 PDF 格式。

Razor 語法在網頁開發中起什麼作用?

Razor 語法在網頁開發中起著至關重要的作用,通過將 C# 或 VB 與 HTML 結合來創建動態網頁。它允許開發者編寫在將 HTML 發送到客戶端的瀏覽器之前執行的服務端代碼,促進無縫集成和功能性。

Razor 頁面如何提升網頁應用開發?

Razor 頁面透過提供一種結構化和有組織的方法來管理代碼,減少重複和複雜性,從而提升網頁應用開發。它們通過允許開發者專注於在基於頁面的格式內構建功能性來簡化開發過程。

什麼是標籤助手,它們如何在 Razor 頁面中提供幫助?

Razor 頁面中的標籤助手透過使服務端代碼能夠使用類似 HTML 的語法創建和渲染 HTML 元素來提供幫助。這有助於通過在將元素發送到客戶端的瀏覽器之前在服務器上轉換元素來生成乾淨且易於維護的 HTML 標記。

如何在 Razor 頁面中處理用戶交互?

Razor 頁面中的用戶交互是透過使用如 OnPostAsync 的處理程序方法來管理的。這些方法處理表單提交和其他用戶輸入,允許開發者根據從客戶端接收到的數據執行操作。

'@model' 指令在 Razor 中有什麼意義?

@model 指令在 Razor 中意義重大,因為它指定了傳遞給 Razor 頁面的對象的數據類型。這允許開發者直接在頁面內訪問和操作模型的屬性,促進數據綁定和交互。

在 Visual Studio 中使用 Razor 和 C# 有什麼好處?

在 Visual Studio 中使用 Razor 和 C# 提供了整合服務端邏輯與 HTML 的好處,通過 Razor 頁面精簡開發,以及輕鬆生成動態網路內容的能力。此外,Visual Studio 提供健全的工具和模板來支持 Razor 開發。

我可以同時用於 C# 和 VB 使用 Razor 語法嗎?

是的,Razor 語法可以用於 C# 和 VB(Visual Basic),以將服務端邏輯與 HTML 結合。這種靈活性允許開發者在享受 Razor 在網頁開發中的能力的同時選擇他們偏好的語言。

Jacob Mellor, Team Iron 首席技術官
首席技術官

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me