跳過到頁腳內容
.NET幫助

Razor 組件:開發者的工作原理

網頁開發經過多年來的發展,隨著現代框架和程式庫的出現,開發人員可以利用強大的工具來建立動態和互動的網頁。 近年來,其中一項獲得顯著流行的技術是Razor Components,它是ASP.NET Core中的Blazor框架的一部分。 Razor Components允許開發人員使用C#和HTML來構建豐富的客戶端網頁應用程式,無需撰寫JavaScript。 在本文中,我們將介紹Razor Components及其如何用於創建模組化、可重用和動態的網頁。

什麼是Razor Components

Razor Components是ASP.NET Core中的一個UI框架,允許開發人員使用C#和HTML的組合來建立網頁,並具有撰寫可在客戶端執行的伺服器端邏輯的能力。Razor Components是Blazor框架的一部分,Blazor是一種客戶端網頁UI框架,可在瀏覽器中使用WebAssembly(Wasm)或SignalR運行C#程式碼。 Razor Components提供了一種基於組件的架構來構建現代網頁應用程式,其中UI被分解為較小的、獨立的組件,這些組件可以一起組合成一個完整的網頁。

Razor Components使用一種稱為Razor語法的標記語言,這是C#和HTML的組合,允許伺服器端和客戶端代碼的無縫整合。 Razor Components類似於其他基於組件的UI框架,例如React、Angular和Vue,但是它們的主要區別在於它們是用C#撰寫的,並依賴於託管模型(WebAssembly或SignalR)在伺服器或客戶端運行。

Razor Components : 對於開發人員的工作原理:圖2 - 什麼是Blazor,什麼是Razor Components?

Razor Components的優勢

Razor Components為網頁開發人員提供了多項優勢,包括:

可重用性

Razor Components是獨立的元素,可以在網頁應用程式或不同專案中的多個地方輕鬆重用。 這促進了代碼的重用性,減少代碼重複,從而使網頁應用程式更具可維護性和可擴展性。

模組化

Razor Components遵循基於組件的架構,UI被分解成較小的組件,這些組件可以一起組合成複雜的網頁。 這促進了模組化,允許開發人員在單個組件中封裝UI和邏輯,使代碼庫更易於管理和維護。

Seamless Integration with C#

由於Razor Components是用C#撰寫的,開發人員可以利用他們現有的C#技能和知識來構建網頁應用程式。 這消除了學習和撰寫JavaScript的需求,這對於已經熟悉C#的開發人員來說是個顯著優勢。

伺服器端和客戶端執行

Razor Components可以根據託管模型在伺服器或客戶端執行。 這為開發人員提供了選擇最合適的執行模型的靈活性,根據性能、安全性和用戶體驗等因素選擇。

實時通信

Razor Components可以使用SignalR,一個實時通信程式庫,來建立客戶端和伺服器之間的雙向通信。 這使得網頁應用程式中的實時更新和通知成為可能,提供了一種響應式和互動的用戶體驗。

可擴展性

Razor Components高度可擴展,允許開發人員創建自訂的組件、程式庫和模板。 這使得開發人員能夠構建符合其網頁應用程式特定需求的定制解決方案。

開始使用Razor Components

要開始使用Razor Components,您需要在系統上安裝.NET Core 3.0或更高版本。 使用Visual Studio或.NET Core CLI中的Blazor模板創建一個新的ASP.NET Core專案。

dotnet new blazorserver

Razor Components : 對於開發人員的工作原理:圖3

@page "/counter"

<h1>Counter</h1>

<p role="status">Current count: @currentCount</p>
<button @onclick="IncrementCount">Click me</button>

@code {
    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }
}

在此範例中,我們有一個名為"Counter"的Razor組件,帶有一個按鈕,按下時會增量currentCount變數。 @code塊用於定義組件的C#代碼。

Razor Components : 對於開發人員的工作原理:圖4

創建自訂的Razor組件

在專案中,創建一個名為"Components"的新資料夾來存儲您的Razor Components。

在"Components"資料夾中,添加一個擁有".razor"擴展名的新Razor組件檔案。 該檔案將包含組件的C#和HTML代碼。

打開Razor組件檔案,使用Razor語法定義您的組件。 Razor語法允許您在單個檔案中結合C#和HTML代碼,使創建動態網頁變得容易。 例如,您可以這樣定義一個簡單的Razor組件:

<h1>Hello, World!</h1>
<p>This is a Razor Component.</p>

@code {
    // C# code for the component can be added here
}

您現在可以在網頁應用程式的其他部分中使用您的Razor Components,通過使用組件的標籤名稱將其包括在您的HTML標記中。 例如,您可以這樣在主Razor頁面中使用該組件:

<MyComponent />

您還可以使用組件參數向您的Razor Components傳遞數據。 組件參數允許您從父組件向子組件傳遞數據,從而在組件之間進行通信。 例如,您可以這樣在Razor Components中定義一個參數:

@code {
    [Parameter]
    public string Message { get; set; }
}

然後像這樣在Razor Components類中使用該組件參數:

<p>@Message</p>

並像這樣從父組件傳遞數據給該組件:

<MyComponent Message="Hello from parent component!" />

Razor Components還可以包含可以在客戶端執行的伺服器端邏輯。例如,您可以直接在Razor Components中使用C#代碼撰寫處理邏輯、發出HTTP請求、處理用戶事件以及執行其他伺服器端操作。 這允許您在不需撰寫任何JavaScript程式碼的情況下創建動態和互動的網頁。

創建可重用的Razor Components

Razor Components的一個優勢是能夠創建可重用的UI組件,可以跨多個頁面或應用程式使用。 要創建一個可重用的組件,您可以在專案的"Shared"資料夾中創建一個新的".razor"檔案。

例如,假設我們想要創建一個顯示書籍清單的組件。 我們可以在"Shared"資料夾中創建一個BookList.razor檔案,例如:

Razor Components : 對於開發人員的工作原理:圖5 - 生成的類

我們可以這樣定義Razor組件:

@typeparam TItem

@foreach (var book in Books)
{
    <p>@book.Title by @book.Author</p>
}

@code {
    [Parameter]
    public List<TItem> Books { get; set; }
}

在此範例中,我們有一個名為BookList的組件,它將一個"Book"物件清單作為Razor參數。 @foreach迴圈用於遍歷此清單並顯示每本書的標題和作者。

接下來的部分中,我們將探討如何使用IronPDF和Razor Components從網頁應用程式創建PDF檔案。

使用IronPDF與Razor Components

IronPDF是一個C#程式庫,允許開發人員從HTML、CSS和JavaScript創建PDF文件。 它建立在Chromium之上,這是驅動Google Chrome的開源瀏覽器。 使用IronPDF,開發人員可以輕鬆將Razor Components轉換為HTML並從中創建PDF文件。

IronPDF在將HTML轉換為PDF方面表現出色,確保佈局和樣式保持完好。 這對於從基於網頁的內容(如報告、發票和文件)生成PDF特別有用。 HTML檔案、URL和HTML字串都可以輕鬆轉換成PDF檔案。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
$vbLabelText   $csharpLabel

安裝IronPDF

要使用IronPDF與Razor Components,我們首先需要安裝IronPDF NuGet套件。 為此,請按照以下步驟操作:

  1. 在Visual Studio中打開您的專案。
  2. 右鍵單擊專案並選擇"管理NuGet套件"。
  3. 搜索"IronPDF"並選擇"IronPDF套件"。
  4. 單擊"安裝"以安裝套件。

安裝IronPDF NuGet套件後,我們可以在Razor Components應用程式中使用它。

Razor Components : 對於開發人員的工作原理:圖6

一旦安裝了套件,您可以使用IronPdf.ChromePdfRenderer類從Razor組件創建一個新的PDF文件。

要在ASP.NET Core Razor Components中創建PDF文件,您可以將HTML語法字串、HTML檔案或URL傳遞給IronPdf.ChromePdfRenderer方法。 例如,假設我們想要創建一個隨著計數器遞增的PDF文件。

var renderer = new IronPdf.ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>My PDF #" + currentCount + "</h1>");
pdf.SaveAs("myPdf" + currentCount + ".pdf");
var renderer = new IronPdf.ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>My PDF #" + currentCount + "</h1>");
pdf.SaveAs("myPdf" + currentCount + ".pdf");
$vbLabelText   $csharpLabel

在此範例中,我們創建了ChromePdfRenderer的新實例。 然後我們創建了RenderHtmlAsPdf方法。 最後,我們使用PdfDocument.SaveAs方法將生成的PDF文件儲存到磁碟。

在此範例中,我們已經修改了計數器組件。 我們修改了計數器按鈕的onClick功能,當按下時,將創建一個包含該Counter計數的PDF。

結論

在本文中,我們探討了如何使用IronPDF的Razor Components從網頁應用程式創建PDF文件。 我們介紹了Razor Components的基礎知識,如何安裝和使用IronPDF,並提供了代碼範例以協助您入門。

Razor Components和IronPDF是可以用來創建強大且功能豐富的網頁應用程式的強大工具。 通過結合這些技術,開發人員可以創建既具有高功能又具吸引力的網頁應用程式。

IronPDF還可以用於將razor頁面和URL轉換為PDF,以及讀取、創建和操作PDF文件。 IronPDF甚至允許對PDF進行更細緻的控制,例如添加標題、頁腳、頁碼、數位簽名、密碼,以及進階PDF操作功能到現有或新生成的PDF檔案。 它對於開發是免費的,但需要免費試用授權商業授權用於生產。

常見問題解答

什麼是 Razor 元件?

Razor 元件是 ASP.NET Core 中的一個 UI 框架,允許開發者使用 C# 和 HTML 的組合來構建網頁,並包含可以在客戶端執行的伺服器端邏輯。它們是 Blazor 框架的一部分,支持基於元件的架構。

Razor 元件如何提升網頁開發?

Razor 元件通過允許開發者使用 C# 和 HTML 來創建動態和交互式網頁應用程序而無需依賴 JavaScript,簡化了網頁開發。這樣可以更無縫地整合伺服器端邏輯和客戶端互動性。

如何從 Razor 元件生成 PDF?

要從 Razor 元件生成 PDF,您可以使用 IronPDF,這允許將元件的 HTML 輸出轉換為 PDF 格式。這是通過使用 IronPdf.ChromePdfRenderer 類將元件渲染為 PDF 文件來實現的。

使用 Razor 元件有什麼好處?

Razor 元件提供了多種好處,包括可復用性、模組化、與 C# 的無縫整合、伺服器端和客戶端執行、與 SignalR 的實時通信,以及高度的可擴展性。

如何在我的專案中安裝 IronPDF?

要將 IronPDF 添加到您的專案中,請使用 Visual Studio 中的 NuGet 套件管理器。搜索 IronPDF 套件並安裝它,為您的 Razor 元件啟用 PDF 生成功能。

Razor 元件可以同時在伺服器端和客戶端執行嗎?

是的,Razor 元件可以根據所選的託管模型在伺服器端和客戶端執行。這種靈活性允許開發者根據特定項目的需求優化應用程序的性能和安全性。

Razor 元件如何促進可重用性?

Razor 元件通過自包含來促進可重用性,這使得它們可以在應用程序內的多個地方或不同項目中使用。這減少了代碼的重複並提高了可維護性和可擴展性。

從網頁內容生成 PDF 的一些使用案例是什麼?

使用 IronPDF 從網頁內容生成 PDF 有助於創建標準化的文檔,如報告、發票和文檔,確保內容在不同平台上的佈局和格式保持一致。

如何使用 Razor 元件創建自定義 UI 元素?

您可以通過使用 Razor 語法在 '.razor' 文件中定義它們來創建自定義 UI 元素。這允許開發者結合 C# 和 HTML,創建動態且可重用的元件,以滿足特定應用程序需求。

Razor 元件中的參數如何工作?

在 Razor 元件中,參數用於從父元件向子元件傳遞數據。這是通過 [Parameter] 屬性來促進的,實現不同應用程序部分之間的通信和數據共享。

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