Razor 是 ASP.NET Core MVC 和 Razor Pages 中用于构建动态网页内容的一种模板引擎。它允许你将 HTML 标记与 C# 代码混合使用,以生成动态的网页。Razor 使得开发者可以更容易地控制 HTML 输出的内容,包括根据应用程序的状态(如用户输入或数据库查询结果)来显示不同的内容。
Razor 语法基础
Razor 文件通常具有 .cshtml
扩展名,并且包含了 HTML 标记、Razor 指令和 C# 代码。Razor 通过特定的标记和语法来区分这些不同的部分。
1. Razor 指令
Razor 指令以 @
符号开始,用于控制模板的渲染逻辑。常见的 Razor 指令包括:
-
页面指令(Page Directive)(Razor Pages 独有):用于设置页面的路由、布局等信息。例如:
@page "/about"
。 -
继承指令(Inherits Directive):指定页面或视图的基类。例如:
@inherits MyPageBase
。 - 模型指令(Model Directive)(在某些情况下使用):在较早的 ASP.NET MVC 版本中用于指定视图模型类型,但在 ASP.NET Core MVC 中,这通常通过视图的泛型类型参数来实现。
-
部分视图指令(Partial Directive):用于在视图中嵌入另一个 Razor 视图文件的内容。例如:
@Html.Partial("_MyPartial")
(在 Razor Pages 或 MVC 视图中),或者在 Razor Pages 中更常用的是<partial name="_MyPartial" />
。 -
区域指令(Section Directive):用于定义可在布局文件中渲染的命名区域。例如:
@section Scripts { <script>...</script> }
。
2. Razor 表达式
Razor 表达式用于在 HTML 中嵌入 C# 代码片段,以生成动态内容。Razor 表达式以 @
符号开始,并用括号 {}
包围。例如:
<p>Hello, @Model.Name!</p>
这里,@Model.Name
是一个 Razor 表达式,用于输出模型(Model)中 Name
属性的值。
3. 代码块
Razor 代码块允许你执行更复杂的 C# 代码逻辑。代码块以 @{
开始,以 }
结束。例如:
@{
var greeting = "Hello, ";
if (Model.IsFirstVisit)
{
greeting += "Welcome!";
}
else
{
greeting += "Back again!";
}
}
<p>@greeting @Model.Name!</p>
在这个例子中,代码块中定义了一个变量 greeting
并根据 Model.IsFirstVisit
的值设置其值,然后这个值被用于输出问候语。
4. 隐式 Razor 表达式
在某些情况下,Razor 允许你省略 {}
,直接使用 @
符号后跟表达式来输出内容。例如:
<p>Today's date is @DateTime.Now.ToShortDateString()</p>
这里,@DateTime.Now.ToShortDateString()
是一个隐式 Razor 表达式,用于输出当前日期的短格式字符串。
结论
Razor 是一种强大的模板引擎,它通过简单而直观的语法,允许开发者在 HTML 中嵌入 C# 代码,以生成动态网页内容。掌握 Razor 语法对于开发 ASP.NET Core MVC 或 Razor Pages 应用程序至关重要。