1

我有一个带有区域的 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)
}
4

1 回答 1

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")
    }

希望这可以帮助。

于 2013-02-13T22:25:01.287 回答