ASP.NET MVC – 视图

ASP.NET MVC 中的 视图(View) 是负责“页面最终长什么样”的部分,文件后缀通常是 .cshtml(C# Razor)或 .vbhtml(VB Razor)。下面给你一份最全、最实用的 视图大全,看完就能写出漂亮、专业、可维护的页面。

一、Razor 语法速查表(2025 年最新写法)

用途C# Razor 写法(.cshtml)VB Razor 写法(.vbhtml)说明
输出变量@Model.Name@userName@Model.Name自动 HTML 编码
输出不编码(显示 HTML)@Html.Raw("<strong>加粗</strong>")@Html.Raw("<strong>加粗</strong>")危险!防 XSS
代码块@{ var x = 1; }@Code Dim x = 1 End Code多行逻辑
if 判断@if (user.IsAdmin) { <span>管理员</span> }@If user.IsAdmin Then <span>管理员</span> End If注意大写 If
foreach 循环@foreach (var p in Model) { <tr>...</tr> }@For Each p In Model ... Next最常用
注释@* 这是一段注释 *@@* 这是一段注释 *@不会出现在源码
声明使用布局页@{ Layout = "~/Views/Shared/_Layout.cshtml"; }同左必须写
声明页面标题@{ ViewBag.Title = "商品列表"; }同左布局页读取
插入局部视图@Html.Partial("_ProductItem", item)同左复用组件
调用带数据的 Action@Html.Action("Menu","Nav")同左子请求

二、一个标准的企业级视图长什么样(推荐模板)

@{
    ViewBag.Title = "商品列表";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@section styles {
    <link href="~/Content/DataTables/css/dataTables.bootstrap5.min.css" rel="stylesheet" />
}

<div class="card shadow mb-4">
    <div class="card-header py-3">
        <h7 class="m-0 font-weight-bold text-primary">
            商品管理
            <a href="@Url.Action("Create")" class="btn btn-primary btn-sm float-end">
                <i class="fas fa-plus"></i> 新增商品
            </a>
        </h7>
    </div>

    <div class="card-body">
        @if (TempData["Success"] != null)
        {
            <div class="alert alert-success alert-dismissible">
                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
                @TempData["Success"]
            </div>
        }

        <table class="table table-bordered table-hover" id="dataTable">
            <thead>
                <tr>
                    <th>@Html.DisplayNameFor(m => m.First().Name)</th>
                    <th>价格</th>
                    <th>库存</th>
                    <th>状态</th>
                    <th width="150">操作</th>
                </tr>
            </thead>
            <tbody>
                @foreach (var item in Model)
                {
                    <tr>
                        <td>@Html.ActionLink(item.Name, "Details", new { id = item.Id })</td>
                        <td>@item.Price.ToString("C")</td>
                        <td>@item.Stock</td>
                        <td>
                            @if (item.IsActive)
                            {
                                <span class="badge bg-success">上架</span>
                            }
                            else
                            {
                                <span class="badge bg-secondary">下架</span>
                            }
                        </td>
                        <td>
                            @Html.ActionLink("编辑", "Edit", new { id = item.Id }, new { @class = "btn btn-warning btn-sm" })
                            <a href="@Url.Action("Delete", new { id = item.Id })" 
                               class="btn btn-danger btn-sm" 
                               onclick="return confirm('确定删除吗?');">删除</a>
                        </td>
                    </tr>
                }
            </tbody>
        </table>
    </div>
</div>

@section scripts {
    <script src="~/Content/DataTables/js/jquery.dataTables.min.js"></script>
    <script src="~/Content/DataTables/js/dataTables.bootstrap5.min.js"></script>
    <script>
        $(document).ready(function () {
            $('#dataTable').DataTable({
                "language": { "url": "//cdn.datatables.net/plug-ins/1.13.7/i18n/zh.json" }
            });
        });
    </script>
}

三、视图中最常用的 10 个 HtmlHelper

Helper作用示例
@Html.ActionLink()生成超链接编辑 删除
@Html.TextBoxFor(m => m.Name)带验证的输入框表单
@Html.ValidationMessageFor()显示验证错误必填提示
@Html.LabelFor()带 for 属性的标签表单美观
@Html.DropDownListFor()下拉框分类选择
@Html.CheckBoxFor()复选框是否上架
@Html.HiddenFor()隐藏字段Id
@Html.BeginForm()表单开始标签(带防伪令牌)推荐
@Url.Action()生成 URL(更安全)JS 中常用
@Html.AntiForgeryToken()防止 CSRF必须加

四、局部视图(Partial View)—— 复用神器

  1. 创建文件:Views/Shared/_ProductCard.cshtml
  2. 内容:
@model Product

<div class="col-md-4 mb-4">
    <div class="card h-100">
        <img src="@Model.ImageUrl" class="card-img-top" />
        <div class="card-body">
            <h5 class="card-title">@Model.Name</h5>
            <p class="card-text text-danger fw-bold">@Model.Price.ToString("C")</p>
            <a href="@Url.Action("Details", "Product", new { id = Model.Id })" 
               class="btn btn-primary">查看详情</a>
        </div>
    </div>
</div>
  1. 主视图中使用:
<div class="row">
    @foreach (var p in Model)
    {
        @Html.Partial("_ProductCard", p)
    }
</div>

五、视图分类与存放规范(企业级标准)

Views/
├─ Home/                    ← 前台首页相关
├─ Product/                 ← 商品模块
│   ├─ Index.cshtml
│   ├─ Details.cshtml
│   ├─ _ProductCard.cshtml  ← 局部视图
│   └─ EditorTemplates/     ← 编辑模板(高级)
├─ Account/                 ← 登录注册(Internet 模板自带)
├─ Shared/                  ← 全局共享
│   ├─ _Layout.cshtml
│   ├─ _LoginPartial.cshtml
│   └─ Error.cshtml
└─ Admin/                   ← 后台所有视图(Areas 内)

六、终极建议

  1. 所有页面都写 @{ Layout = ... } 或用 _ViewStart.cshtml 统一
  2. 所有表单都用 @Html.BeginForm() + @Html.AntiForgeryToken()
  3. 所有列表页都加 @section scripts 放 DataTables、分页
  4. 所有提示信息都用 TempData["Success"] + Alert 框
  5. 所有可复用组件都做成 Partial View

学会上面这些,你写的页面就已经比 95% 的开发者更专业、更美观、更易维护了!

需要我直接发你一个「企业级完整视图模板包」吗?包含:

  • 前台商城完整页面(列表、详情、购物车)
  • 后台管理所有标准页面(带 DataTables、表单验证)
  • 所有局部视图组件(分页、面包屑、搜索框)
  • Bootstrap 5 + AdminLTE 双布局完美切换

直接复制进 Views 文件夹就能用,省你一个月美工时间,随时说一声就发!

文章已创建 2965

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部