在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
Razor 是一种服务器端标记语言,用于使用 .NET Core 和 .NET Framework 创建动态网页。 主要与 ASP.NET Core 配合使用。 Razor Pages 是 ASP.NET Core 的一个新方面,它提供了一种简洁明了的方式来组织应用程序中的代码,减少了代码重复的问题。 Razor 结合了服务器端使用 C# 或 VB(Visual Basic)使用 HTML 创建网页内容。
本教程将指导您在Visual Studio中使用C#和Razor创建一个基本应用程序。 我们开始吧!
在我们深入了解 Razor 世界之前,请确保您已安装以下软件:
.NET Core SDK
2.Visual Studio
这些都是必要的,因为它们提供了 Razor 视图引擎和本教程将使用的项目模板。 此外,它们还可以在多个操作系统上运行,这意味着无论您使用的是 Windows、Linux 还是 macOS,都可以跟读。
打开 Microsoft Visual Studio 并按照以下步骤操作:
点击 "文件">"新建">"项目"。
在项目模板选择界面,选择 "Blazor 服务器应用程序"。
将项目命名为 "IronPDFExample",然后点击 "创建"。
从下拉菜单中选择".NET 7.0 "或更高版本。
您现在有了一个新的 Razor Pages 项目。
Razor 文件使用.cshtml
文件扩展名,将 C#(因此 "cs)使用 HTML。 如果我们使用 Visual Basic,文件扩展名将变为 .vbhtml
。
在解决方案资源管理器中,找到并打开名为"Index.cshtml"的.cshtml
扩展文件。 在这里,您会看到 HTML 代码和 C# 代码的结合。 Razor Parser 使这种混合成为可能。
探索 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>
在本代码示例中,@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 语法允许您编写循环,如 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 for .NET是一个流行的库,允许开发人员生成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如果您觉得有价值,可以购买适合您需要的许可证。