1

エリアのある MVC 4 サイトがあります。2 つのスクリプト バンドルをセットアップします。1 つはサイトに必要なすべての一般的なスクリプト用で、もう 1 つはエリアに関連するスクリプト用です。Scripts.Render() を使用して共通のサイト バンドルが参照される、サイトの共通のレイアウト ビューがあります。エリア固有の JavaScript ファイルをレンダリングしたい共通のレイアウト ビューを使用するエリア用の 2 番目のレイアウト ビューがありますが、機能せず、ファイルがまったくレンダリングされません。バンドル レンダリングをルート レイアウト ビューに移動すると、正常にレンダリングされます。

これがエリア ビューで機能しない理由と、それを機能させる方法を教えてください。これらの領域固有のスクリプトをすべてのユーザーが利用できるようにしたくはありません。実際にそれらを必要とするのは、定義された非常に小さなサブセットだけだからです。

共通レイアウト ビュー:

@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 に答える