Bundle Scripts.Render在区域视图中不起作用

时间:2013-02-13 20:30:36

标签: asp.net asp.net-mvc asp.net-mvc-4

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

1 个答案:

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

希望这会有所帮助。