我有我的 ASP.NET MVC 项目。我有一个 _Layout、一个控制器和一些视图。一些代码显然是全局的。例如 _Layout CSS 和整个站点通用的 CSS 肯定会放在全局 css 文件中。
但是,当样式和 JavaScript 特定于视图时,它们应该包含在 .cshtml 文件中还是应该包含在全局文件中?
我有我的 ASP.NET MVC 项目。我有一个 _Layout、一个控制器和一些视图。一些代码显然是全局的。例如 _Layout CSS 和整个站点通用的 CSS 肯定会放在全局 css 文件中。
但是,当样式和 JavaScript 特定于视图时,它们应该包含在 .cshtml 文件中还是应该包含在全局文件中?
所有视图共有的东西应该包含在 _Layout 文件中。为特定页面自定义的 CSS 和 Javascript 应仅在该特定页面上加载。(不是编写的,而是从不同的 .JS 或 css 文件呈现)
通过这种方式,视图特定资源被捆绑和缩小
_Layout.cshtml:
<head>
@Styles.Render("~/Content/mastercss")
@Scripts.Render("~/bundles/masterjs")
@RenderSection("header", required: false)
</head>
看法 :
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section header{
@Styles.Render("~/Content/viewspecific")
@Scripts.Render("~/bundles/viewspecific")
}
捆绑包应按需要它们的页面进行分区。例如,Internet 应用程序的默认 ASP.NET MVC 模板会创建一个独立于 jQuery 的 jQuery Validation 包。因为创建的默认视图没有输入并且不发布值,所以它们不包括验证包
http://www.asp.net/mvc/overview/performance/bundling-and-minification
您可以通过布局中的 RenderSection 定义一个部分,然后在您的视图中使用它,如下所示:
<head>
<title>@ViewBag.Title</title>
<meta name="viewport" content="width=device-width" />
<script src="~/Content/Scripts/public.js"></script>
@RenderSection("head", false)
</head>
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section head{
<script src="~/Content/Scripts/custom.js"></script>
}