Razor语法是C#生态中用于构建动态网页视图的模板标记语言,它允许开发者在HTML页面中直接嵌入C#代码,实现页面逻辑和展示内容的结合,是ASP.NET Core等框架默认的视图引擎语法。

Razor基础语法规则
代码块与表达式
Razor中通过@{ }定义多行代码块,单行表达式用@开头直接输出结果。代码块内部的C#代码遵循常规C#语法规则,变量需要先声明再使用。
@{
// 定义多行代码块
string userName = "测试用户";
int userAge = 25;
}
<!-- 输出变量值 -->
<p>用户名:@userName</p>
<p>用户年龄:@userAge</p>
<!-- 直接输出表达式结果 -->
<p>明年年龄:@(userAge + 1)</p>
常用Razor指令
Razor提供了多个内置指令用于配置视图行为,常用的指令包括@model、@using、@inject等。
@model:指定视图绑定的模型类型,后续可以直接使用模型的属性@using:引入需要使用的命名空间,避免重复写完整命名空间路径@inject:从依赖注入容器中注入服务到视图中使用
@model UserViewModel @using System.Collections.Generic @inject ILogger<dynamic> Logger <p>模型用户名:@Model.Name</p>
条件判断与循环语法
条件判断
Razor中支持if、else if、else条件判断,语法和C#代码一致,判断逻辑写在@if后面即可。
@{
bool isVip = true;
}
@if (isVip)
{
<p>您是VIP用户,享受专属权益</p>
}
else
{
<p>普通用户,可升级为VIP</p>
}
循环语法
常用的循环包括for循环和foreach循环,用于遍历集合或者重复输出内容。
@{
List<string> tagList = new List<string> { "C#", "Razor", "ASP.NET Core" };
}
<ul>
@foreach (var tag in tagList)
{
<li>@tag</li>
}
</ul>
<p>数字遍历:</p>
@for (int i = 0; i < 3; i++)
{
<span>@i </span>
}
注释与转义规则
Razor注释使用@* *@包裹,不会输出到最终生成的HTML中。如果需要在页面中显示@符号本身,需要使用@@进行转义。
@* 这是Razor注释,不会渲染到页面 *@ <p>邮箱格式示例:user@@ipipp.com</p>
基础示例:完整视图页面
下面是一个结合上述语法的完整Razor视图示例,绑定用户模型并展示用户信息和标签列表。
@model UserViewModel
@using System.Collections.Generic
<!DOCTYPE html>
<html>
<head>
<title>用户信息页</title>
</head>
<body>
<h1>用户详情</h1>
<p>姓名:@Model.Name</p>
<p>年龄:@Model.Age</p>
@if (Model.Age >= 18)
{
<p>已成年</p>
}
else
{
<p>未成年</p>
}
<h3>用户标签:</h3>
<ul>
@foreach (var tag in Model.Tags)
{
<li>@tag</li>
}
</ul>
</body>
</html>
对应的模型类定义如下:
public class UserViewModel
{
public string Name { get; set; }
public int Age { get; set; }
public List<string> Tags { get; set; }
}
C#Razor语法模板引擎ASP.NET_Core修改时间:2026-07-22 09:21:46