.Net Core 学习:Razor Pages -- 标签助手

简介

用于服务端渲染,使服务器端代码能够参与创建和呈现内部的HTML元素,帮助程序更加关注HTML元素,而且使用起来更加自然。

优势:

  • 简化开发‌:减少手动编写冗余 HTML 代码,提高开发效率。
  • ‌增强功能‌:自动处理模型绑定、验证和路由,使代码更易维护。
  • ‌与 MVC 模式集成‌:标签助手与控制器和视图的 MVC 基元(如模型绑定和验证)协同工作,确保一致性。‌

分类

页面路由标签助手

生成页面链接

html 复制代码
<!-- 基本页面链接 -->
<a asp-page="/Books/Index">图书列表</a>

<!-- 带参数的页面链接 -->
<a asp-page="/Books/Details" asp-route-id="5">查看图书详情</a>

<a asp-page="/Books/Edit" 
   asp-route-id="@Model.Book.Id"
   asp-route-category="fiction"
   class="btn btn-warning">编辑</a>

<!-- 表单的页面链接 -->
<form method="post" asp-page-handler="Delete" asp-route-id="5">
    <button type="submit" class="btn btn-danger">删除</button>
</form>

<!-- 区域内的页面链接 -->
<a asp-page="/Index" asp-area="Admin">管理后台</a>

<!-- 锚点链接 -->
<a asp-page="/Books/Index" asp-fragment="section-1">跳转到第1节</a>

‌表单标签助手

创建和处理表单

html 复制代码
<!-- 基本表单 -->
<form method="post" asp-page="Create">
    <!-- 表单内容 -->
</form>

<!-- 带处理器的表单 -->
<form method="post" asp-page-handler="Upload" enctype="multipart/form-data">
    <!-- 文件上传内容 -->
</form>

<!-- 防伪令牌 -->
@Html.AntiForgeryToken()
<!-- 或使用标签助手 -->
<form method="post">
    <input type="hidden" asp-antiforgery="true" />
</form>

<!-- 标签助手 -->
<label asp-for="Book.Title" class="form-label"></label>

<!-- 输入助手 -->
<input asp-for="Book.Title" class="form-control" />

<!-- 下拉列表 -->
<select asp-for="Book.CategoryId" 
        asp-items="Model.Categories"
        class="form-select">
    <option value="">请选择分类</option>
</select>

<!-- 文本区域 -->
<textarea asp-for="Book.Description" 
          class="form-control" 
          rows="4"></textarea>

<!-- 复选框 -->
<input type="checkbox" asp-for="Book.IsAvailable" class="form-check-input" />

<!-- 单选按钮 -->
<input type="radio" asp-for="Book.Status" value="Published" /> 已发布
<input type="radio" asp-for="Book.Status" value="Draft" /> 草稿

表单相关属性:

  • asp-for - 绑定模型属性

  • asp-items - 绑定选项列表

  • asp-format - 格式化显示

  • asp-page-handler - 指定处理方法

验证标签助手

html 复制代码
<!-- 验证摘要 -->
<div asp-validation-summary="All" class="text-danger"></div>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div asp-validation-summary="None" class="text-danger"></div>

<!-- 单个字段验证 -->
<span asp-validation-for="Book.Title" class="text-danger"></span>

<!-- 输入字段的验证属性会自动应用 -->
<input asp-for="Book.Price" 
       data-val="true"
       data-val-range="价格必须在0.01到1000之间"
       data-val-range-min="0.01"
       data-val-range-max="1000"
       data-val-required="价格是必填字段" />

‌验证摘要模式:

  • All - 显示所有错误

  • ModelOnly - 只显示模型级错误

  • None - 不显示

资产标签助手

用于处理CSS、JS等静态资源

html 复制代码
<!-- 脚本标签助手 -->
<script src="~/js/site.js" 
        asp-append-version="true"
        asp-fallback-src="~/js/fallback.js"
        asp-fallback-test="window.jQuery">
</script>

<!-- 链接标签助手 -->
<link rel="stylesheet" 
      href="~/css/site.css"
      asp-append-version="true"
      asp-fallback-href="~/css/fallback.css"
      asp-fallback-test-class="hidden"
      asp-fallback-test-property="visibility"
      asp-fallback-test-value="hidden" />

<!-- 图片标签助手 -->
<img src="~/images/logo.png" 
     asp-append-version="true"
     alt="Logo" 
     width="200" 
     height="100" />

常用属性:

  • asp-append-version - 添加版本号防止缓存

  • asp-fallback-src - 回退源

  • asp-fallback-test - 回退测试

锚点标签助手

html 复制代码
<!-- 控制器动作链接 -->
<a asp-controller="Home" 
   asp-action="Index"
   asp-route-id="@item.Id"
   asp-route-returnUrl="@Context.Request.Path"
   asp-protocol="https"
   asp-host="example.com"
   asp-fragment="section1">
    @item.Title
</a>

<!-- 生成电子邮件链接 -->
<a asp-protocol="mailto" 
   asp-host="support@example.com"
   asp-fragment="help">
    联系支持
</a>
相关推荐
滕州市燕猫虎计算机科技工作室个体工商户5 小时前
《Rust程序设计》学习笔记八:结构体
笔记·学习·rust·rust程序设计
别动我齐刘海6 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
xier_ran8 小时前
【infra之路】AI 编译器学习笔记(二):重拾 C++——移动语义与 LLVM 风格的类型转换
人工智能·笔记·学习
li星野10 小时前
5 TYPES OF ADVERBS — One-Page Notes
学习
星恒随风10 小时前
Linux库的底层原理:ELF文件格式、静态链接、程序加载、虚拟地址空间与GOT/PLT详解
linux·运维·笔记·学习·状态模式
罗西的思考10 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 — (7)— 混合机制
笔记·学习
starsky7623810 小时前
Agent学习——上下文工程(三)
学习
xier_ran12 小时前
【infra之路】AI 编译器学习笔记(四):PatternRewriter 与贪心 driver
人工智能·笔记·学习
小弥儿12 小时前
GitHub今日热榜 | 2026-10-12:pytorch 上升四位
人工智能·pytorch·学习·开源·github
AOI小白新手上路13 小时前
DeepLens 的课程学习自动设计与同源仿真论文综述
学习