我有一个带有区域的MVC 4站点。我设置了两个脚本包,一个用于站点所需的所有常用脚本,另一个用于与区域相关的脚本。我有一个公共布局视图,用于使用Scripts.Render()引用公共站点包的站点。我有一个区域的第二个布局视图,它使用公共布局视图,我想在那里渲染区域特定的javascript文件,但它不起作用,根本没有渲染文件。如果我将束渲染移动到根布局视图,它会渲染得很好。
为什么这在区域视图中不起作用以及如何使其工作?我宁愿不为所有用户提供这些特定于区域的脚本,因为只有非常小的,已定义的子集实际上需要它们。
公共布局视图:
@Scripts.Render(@"~/Scripts/all_scripts")
...
@RenderSection("Javascript", required: false)
特定区域视图:
@section Javascript {
@Scripts.Render(@"~/Scripts/area_scripts")
@RenderSection("Javascript", required: false)
}
答案 0 :(得分:2)
我对此进行了测试,似乎工作正常。管理员特定的脚本在管理索引视图中呈现(并且也在管理布局中工作)。是否正确配置了所有捆绑/路径?
BundleConfig.cs
bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
"~/Scripts/jquery-ui-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryadmin").Include(
"~/Scripts/Admin/jquery.unobtrusive-ajax-admin*",
"~/Scripts/Admin/jquery.validate-admin*"));
_Layout.cshtml
@Scripts.Render("~/bundles/jqueryui")
@RenderSection("Javascript", required: false)
_AdminLayout.cshtml
@{
ViewBag.Title = "_AdminLayout";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>AdminLayout</h2>
@section Javascript{
@RenderSection("Javascript", required: false)
}
AdminHome / Index.cshtml
@{
ViewBag.Title = "Index";
Layout = "~/Areas/Admin/Views/Shared/_AdminLayout.cshtml";
}
<h2>Index</h2>
@section Javascript{
@Scripts.Render("~/bundles/jqueryadmin")
}
希望这会有所帮助。