ASP.NET MVC – 样式和布局

ASP.NET MVC 中的「样式和布局」主要靠下面这几块配合完成,学会了就能轻松做出漂亮、统一、可维护的前后台界面。

一、核心布局文件(_Layout.cshtml)

位置(两种常见写法):

  • 经典写法:Views/Shared/_Layout.cshtml → 前台通用布局
  • 后台写法:Areas/Admin/Views/Shared/_AdminLayout.cshtml → 后台专用布局

标准 _Layout.cshtml 模板(2025 年推荐写法,兼容 Bootstrap 5)

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>@ViewBag.Title - 我的网站</title>

    <!-- CSS(使用 Bundle 或直接 CDN) -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="~/Content/site.css" rel="stylesheet" />   <!-- 自己额外写的样式 -->

    @RenderSection("styles", required: false)   <!-- 每个页面可额外插入 css -->
</head>
<body>
    <!-- 顶部导航栏 -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-primary">
        <div class="container">
            <a class="navbar-brand" href="/">我的商城</a>
            <div class="navbar-nav ms-auto">
                @Html.Partial("_LoginPartial")   <!-- 右上角:登录/注册/用户名 -->
            </div>
        </div>
    </nav>

    <!-- 页面主体 -->
    <div class="container body-content">
        @RenderBody()   <!-- ★ 这里渲染每个页面的内容 ★ -->
    </div>

    <!-- 底部 -->
    <footer class="bg-light text-center py-4 mt-5">
        <p>© @DateTime.Now.Year - 我的网站,所有代码都是自己写的</p>
    </footer>

    <!-- JS -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
    <script src="~/Scripts/jquery-3.7.1.min.js"></script>

    @Scripts.Render("~/bundles/jqueryval")   <!-- 客户端验证 -->
    @RenderSection("scripts", required: false)   <!-- 每个页面可额外插入 js -->
</body>
</html>

二、让每个页面自动使用这个布局(两种方法)

方法1:在每个视图最上面写(最常用)

@{
    Layout = "~/Views/Shared/_Layout.cshtml";   // 前台
    // Layout = "~/Areas/Admin/Views/Shared/_AdminLayout.cshtml"; // 后台
}

方法2:全局统一设置(推荐,省事)

Views/_ViewStart.cshtml 里写一次就全部生效:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

后台 Admin 区域单独在 Areas/Admin/Views/_ViewStart.cshtml 里再写一次,覆盖成自己的布局。

三、常见布局技巧(99% 项目都会用到)

需求写法示例
给当前页面单独加标题@{ ViewBag.Title = "商品列表"; }
页面要额外插入 CSS在具体页面顶部加入
@section styles { <link href="~/Content/datatable.css" rel="stylesheet" /> }
页面要额外插入 JS@section scripts { <script src="~/Scripts/mychart.js"></script> }
面包屑导航在 _Layout 里放 @RenderSection("breadcrumb", false),然后每个页面自己填
左侧菜单(后台常见)在 _AdminLayout.cshtml 放左侧 <aside>,用 @Html.Action("Menu","Nav") 动态生成菜单

四、样式文件组织建议(企业级标准)

Content/
├─ css/
│   ├─ site.css                 ← 全局自定义样式
│   ├─ admin.css                ← 后台专用
│   └─ themes/dark.css          ← 黑暗模式(可选)
├─ bootstrap/                  ← 如果你想本地放 Bootstrap
└─ fonts/

Scripts/
├─ jquery.validate.min.js
├─ admin.js
└─ site.js

五、快速美化整站的 3 个神器(2025 最新推荐)

工具用途一行代码接入
Bootstrap 5响应式 + 组件最全CDN 两行搞定
AdminLTE 3(免费)最漂亮的后台模板https://adminlte.io
Bootswatch免费换肤(22 套主题)换一个 CDN 链接即可

示例:想用 AdminLTE 做后台,只需要把 Areas/Admin/Views/Shared/_AdminLayout.cshtml 整个替换成官方模板就行,5 分钟出效果。

六、完整示例:前台 + 后台两种布局完美共存

Views/
├─ Shared/
│   └─ _Layout.cshtml               ← 前台(Bootstrap 5 简洁风)
└─ _ViewStart.cshtml                ← 默认使用前台布局

Areas/
└─ Admin/
    └─ Views/
        ├─ Shared/
        │   └─ _AdminLayout.cshtml     ← 后台(AdminLTE 深色侧边栏)
        └─ _ViewStart.cshtml           ← 强制后台所有页面使用 _AdminLayout

这样访问 /Home/Index 用前台布局,访问 /Admin/Dashboard 自动切换成后台布局,完美!

需要我直接发你两个超好看的现成布局包吗?

  1. 前台:Bootstrap 5 + 极简风(带响应式导航)
  2. 后台:AdminLTE 3.2 中文版(已汉化,带动态菜单、权限示例)

直接拉到项目里覆盖 Views/Shared 和 Areas/Admin/Views/Shared,F5 运行立刻高大上,随时说一声就发!

文章已创建 2965

发表回复

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

相关文章

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

返回顶部