.NET 帮助

Razor C#(对开发人员的工作原理)

发布 2023年五月30日
分享:

Razor 是一种服务器端标记语言,用于使用 .NET Core 和 .NET Framework 创建动态网页。 主要与 ASP.NET Core 配合使用。 Razor Pages 是 ASP.NET Core 的一个新方面,它提供了一种简洁明了的方式来组织应用程序中的代码,减少了代码重复的问题。 Razor 结合了服务器端使用 C# 或 VB(Visual Basic)使用 HTML 创建网页内容。

本教程将指导您在Visual Studio中使用C#和Razor创建一个基本应用程序。 我们开始吧!

先决条件

在我们深入了解 Razor 世界之前,请确保您已安装以下软件:

  1. .NET Core SDK

    2.Visual Studio

    这些都是必要的,因为它们提供了 Razor 视图引擎和本教程将使用的项目模板。 此外,它们还可以在多个操作系统上运行,这意味着无论您使用的是 Windows、Linux 还是 macOS,都可以跟读。

步骤 1 创建一个新的 Razor Pages 项目

打开 Microsoft Visual Studio 并按照以下步骤操作:

  1. 点击 "文件">"新建">"项目"。

  2. 在项目模板选择界面,选择 "Blazor 服务器应用程序"。

    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>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<p> The current time is @DateTime.Now</p>
VB   C#

在本代码示例中,@DateTime.Now 是 Razor 代码。 在发送到客户端之前,翻译会在服务器上执行,并替换为当前的日期和时间。

雷泽视图

Razor 中的 "视图 "一词对应于任何旨在向用户展示信息的网页。 Razor 视图引擎负责向用户呈现 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 Markup 允许我们在 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>
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 页面中使用 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 页面中。

交换声明

开关语句是 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 页面使用处理程序方法来管理用户交互。 例如,为了处理表单提交,我们可以在 Razor 页面的相应页面模型文件中创建一个名为 "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#

在 Razor 中使用 IronPDF 生成 PDF

了解 IronPDF for .NET是一个流行的库,允许开发人员生成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 代码甚至完整的 Razor 视图生成 PDF。

现在,当您继续构建更高级的应用程序时,您可以利用 IronPDF 提供的强大功能。 你可以免费试用 IronPDF如果您觉得有价值,可以购买适合您需要的许可证。

< 前一页
Vim for Windows(开发人员如何使用)
下一步 >
C# 等待几秒(开发者如何操作)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,781,565 查看许可证 >