Asp.net mvc 是否可以将每页的脚本和样式捆绑在一起
虽然捆绑是VS的一个整洁的特性,但有时我希望有一个脚本或css可用于特定页面。这样,我可以确保避免名称冲突和/或重写 是否可以捆绑文件,以便只提供全局文件和特定于页面的文件 例如,假设我有一个名为Asp.net mvc 是否可以将每页的脚本和样式捆绑在一起,asp.net-mvc,bundling-and-minification,Asp.net Mvc,Bundling And Minification,虽然捆绑是VS的一个整洁的特性,但有时我希望有一个脚本或css可用于特定页面。这样,我可以确保避免名称冲突和/或重写 是否可以捆绑文件,以便只提供全局文件和特定于页面的文件 例如,假设我有一个名为Cabinet.cshtml的页面。我还有Cabinet.js和Cabinet.css文件。另一方面,我有另一个名为AdminPanle.cshtml的页面,其中包含文件admin.js和admin.css 现在,我希望这两个视图只能访问它们相应的文件,还可以访问jQuery和jQueryUI。因此jQ
Cabinet.cshtml
的页面。我还有Cabinet.js
和Cabinet.css
文件。另一方面,我有另一个名为AdminPanle.cshtml
的页面,其中包含文件admin.js
和admin.css
现在,我希望这两个视图只能访问它们相应的文件,还可以访问jQuery和jQueryUI。因此jQuery必须是全局的 那么问题出在哪里?默认情况下,在
BundleConfig.cs
中,您有:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
"~/Scripts/jquery-ui-{version}.js"));
因此,将这些捆绑包放在\u Layout.cshtml
的头部:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
并创建4个其他捆绑包:
//scripts
bundles.Add(new ScriptBundle("~/bundles/cabinet").Include(
"~/Scripts/Cabinet.js"));
bundles.Add(new ScriptBundle("~/bundles/admin").Include(
"~/Scripts/admin.js"));
//styles
bundles.Add(new StyleBundle("~/Content/cabinet").Include("~/Content/Cabinet.css"));
bundles.Add(new StyleBundle("~/Content/admin").Include("~/Content/admin.css"));
现在,您可以分离这些脚本和样式,并仅在需要的页面上添加它们
另外,我认为在head
标记中定义\u Layout.cshtml
中的两个部分是很好的
<head>
//other scripts and styles here
@RenderSection("scriptslib", required: false)
@RenderSection("csslib", required: false)
</head>
您始终可以创建自己的捆绑包-
新脚本捆绑包(“~/bundles/cabinet”)
等,其中包括jquery
、jquery ui
和cabinet
,并在视图中包括@Scripts.Render(“~/bundles/cabinet”)
。或者只使用cabinet
创建捆绑包,将主捆绑包放在布局中,将特定捆绑包放在页面中哦,太好了。只在cabinet.cshtml文件中使用@Scripts.Render(“~/bundles/cabinet”)
将解决此问题。谢谢Stephen。我所缺少的是我忘记了我可以在特定页面中单独呈现它们。在@部分中呈现(~/bundles/css)怎么样?我现在正在尝试这样做,并获得
:facepalm:
@section scriptslib{
@Scripts.Render("~/bundles/cabinet")
}