在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
Razor 是一种服务器端标记语言,用于使用 .NET Core 和 .NET Framework 创建动态网页。它主要与 ASP.NET Core 结合使用。Razor 页面是 ASP.NET Core 的一个新方面,它提供了一种简洁明了的方式来组织应用程序中的代码,减少了代码重复的问题。Razor 结合了服务器端使用 C# 或 VB (Visual Basic) 使用 HTML 创建网页内容。
本教程将指导你在 Visual Studio 中使用 Razor 和 C# 创建一个基本应用程序。让我们开始!
在我们进入 Razor 世界之前,请确保您已安装以下设备:
2.Visual Studio
这些都是必要的,因为它们提供了 Razor 视图引擎和本教程将使用的项目模板。此外,它们还可以在多个操作系统上运行,这意味着无论你使用的是 Windows、Linux 还是 macOS,都可以继续学习。
打开 Microsoft Visual Studio 并按照以下步骤操作:
1.点击 "文件">"新建">"项目"。
2.在项目模板选择界面,选择 "Blazor 服务器应用程序"。
![Razor C#(如何为开发人员工作) 图 1](/static-assets/pdf/blog/razor-csharp/razor-csharp-1.webp)
3.将项目命名为 "IronPDFExample",然后点击 "创建"。
![Razor C#(如何为开发人员工作) 图 2](/static-assets/pdf/blog/razor-csharp/razor-csharp-2.webp)
4.从下拉菜单中选择".NET 7.0 "或更高版本。
![Razor C#(如何为开发人员工作) 图 3](/static-assets/pdf/blog/razor-csharp/razor-csharp-3.webp)
现在您有了一个新的 Razor Pages 项目。
Razor文件使用".cshtml "文件扩展名,结合了C#和MySQL。 (因此 "cs) 和 HTML。如果我们使用 Visual Basic,文件扩展名将变为 .vbhtml
。
在解决方案资源管理器中,找到并打开扩展名为"Index.cshtml"的.cshtml
文件。在这里,你会看到 HTML 代码和 C# 代码的组合。这种混合是通过 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视图引擎负责向用户呈现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 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>
这里,"@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 页面中使用 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 页面中。
开关语句是 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 中的 #### 循环
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页面使用处理程序方法来管理用户交互。例如,为了处理表单提交,我们可以在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
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 代码甚至完整的 Razor 视图生成 PDF。
现在,当您继续创建更高级的应用程序时,您可以利用 IronPDF 提供的强大功能。您可以试用 IronPDF 的以下功能 免费的.如果您觉得它很有价值,可以购买起价为 $749 的许可证。