ASP.NET Razor 语法最全「标记」速查表(2025 最新版)
记住下面 15 行标记,你就能写出 99% 的 Razor 页面!
| 标记符号 | 名称 | 用途 | 必背示例 |
|---|---|---|---|
@ | Razor 代码标记 | 切换到 C# 代码模式 | @DateTime.Now → 2025-11-30 10:23:45 |
@{ ... } | 代码块 | 写多行 C# 代码(最常用!) | @{ var name = "张三"; } |
@: | 文本输出 | 在代码块中输出纯文本(单行) | @foreach(var i in list){ @:・@i <br> } |
<text>...</text> | 文本输出 | 在代码块中输出纯文本(多行) | @foreach(var i in list){ <text>・@i<br></text> } |
@( ... ) | 括号表达式 | 强制代码优先级 | <h1>@("欢迎 " + user.Name)</h1> |
@* ... *@ | 注释 | Razor 注释(页面源码不可见) | @* 这是一段不会显示的注释 *@ |
@section | 定义区域 | 配合 Layout 使用 | @section Scripts { <script src="a.js"></script> } |
@RenderSection() | 渲染区域 | 在布局页调用 section | @RenderSection("Scripts", required: false) |
@RenderBody() | 渲染页面主体 | 布局页必须写这一行 | @RenderBody() |
@RenderPage() | 包含子页面 | 类似 include | @RenderPage("~/Shared/_Header.cshtml") |
@RenderPartial() | 包含局部视图 | 不传 PageData 的轻量版 | @RenderPartial("~/Shared/_Menu.cshtml") |
@Html.Raw() | 输出不转义 HTML | 显示 HTML 标签而不是文本 | @Html.Raw("<strong>加粗</strong>") → 加粗 |
@Href("~/xxx") | 生成根路径 | 防止路径错误(最保险!) | <script src="@Href("~/Scripts/jquery.js")"></script> |
@model | 强类型模型(MVC) | Razor Pages / MVC 才用 | @model User(Web Pages 基本不用) |
@functions { } | 定义页面内类 | 页面里写方法、类 | @functions { public string Hi() => "你好"; } |
2025 年最常用的 10 个「标记组合」写法(直接复制)
1. 最常见页面开头
@{
Layout = "~/Shared/_Layout.cshtml";
Page.Title = "用户中心";
var user = WebSecurity.CurrentUserId > 0 ? Db.GetUser() : null;
}
2. 判断登录状态(全局 _PageStart.cshtml)
@if(!WebSecurity.IsAuthenticated){
Response.Redirect("~/Login?ReturnUrl=" + Request.Url);
}
3. 循环输出(两种最优雅写法)
@foreach(var p in products){
<div class="card">
<h3>@p.Name</h3>
<p>¥@p.Price</p>
</div>
}
@* 或者用 <text> 避免多余换行 *@
@foreach(var item in list){
<text><li>@item</li></text>
}
4. 条件输出 HTML
@if(user.IsAdmin){
@:【管理员】
@* 或者 *@
<text>【管理员】</text>
}
5. 安全输出 HTML 内容(防止 XSS)
@Html.Raw(article.Content) <!-- 信任内容才用 -->
@* 普通输出会自动转义 *@
@article.Content <!-- 推荐!自动防注入 -->
6. 包含公共页面
@RenderPage("~/Shared/_Header.cshtml")
@RenderPage("~/Shared/_Footer.cshtml")
7. 布局页完整模板
<!DOCTYPE html>
<html>
<head>
<title>@Page.Title</title>
@RenderSection("head", required: false)
</head>
<body>
@RenderPage("~/Shared/_Nav.cshtml")
<div class="container">
@RenderBody()
</div>
@RenderSection("scripts", required: false)
</body>
</html>
8. 定义 + 渲染 Section
<!-- 内容页 -->
@section Scripts {
<script src="~/Scripts/user.js"></script>
}
9. 页面内函数(超实用)
@functions {
public string FormatMoney(decimal m) => $"¥{m:N2}";
public helper Star(int n){
for(int i=1;i<=5;i++){
if(i<=n){ <text>★</text> }else{ <text>☆</text> }
}
}
}
<p>价格:@FormatMoney(999.99)</p>
@Star(4)
10. 防止路径错误(最重要!)
<link href="@Href("~/Content/bootstrap.css")" rel="stylesheet" />
<script src="@Href("~/Scripts/jquery.js")"></script>
<img src="@Href("~/Images/logo.png")" />
终极记忆口诀(10 个字记住全部核心标记)
@ 大括号 冒号 text 渲染 HTML 路径 函数区
@ → 切换代码
@{ } → 多行代码块
@: 或 <text> → 输出文本
@RenderBody()/Section → 布局系统
@Html.Raw → 输出 HTML
@Href → 根路径
@functions → 页面类
记住这 10 个标记,你写 Razor 页面就再也不会写错!
需要我现在就把「2025 终极 Razor 标记速查墙」(PDF + 可打印版 + 深色模式)发给你吗?
贴在工位上,3 天记住所有 Razor 语法!
随时说「发我 Razor 标记表」,我立刻发你!