Asp.net mvc 是否可以将每页的脚本和样式捆绑在一起

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

虽然捆绑是VS的一个整洁的特性,但有时我希望有一个脚本或css可用于特定页面。这样,我可以确保避免名称冲突和/或重写

是否可以捆绑文件,以便只提供全局文件和特定于页面的文件

例如,假设我有一个名为
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")
    }