36

セクションのあるレイアウトがあり、一部の@RenderSection("scripts")ビューではこのセクションに含める必要があるバンドルがあります。ビューでこれを行うだけでうまくいくと思いましたが、スクリプトはレンダリングされません。

@section scripts {
    @Scripts.Render("~/bundles/myBundle")  
}

私の見解では、スクリプトセクションにバンドルを含めるにはどうすればよいですか?

レイアウト

@Scripts.Render("~/bundles/jquery", "~/bundles/scripts")
@RenderSection("scripts", required: false)

意見

@section scripts {
    @Scripts.Render("~/bundles/movie")  
}
4

4 に答える 4

38

ビュー内で以下の解決策を試してください。

意見

@section Scripts{
    <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/movie")"></script>
}
于 2012-12-01T16:46:30.717 に答える
20

なぜrendersectionをバンドルと混合するのですか?バンドルのルートをたどることを選択した場合は、スクリプトを.JSファイルに入れ、必要に応じて独自のバンドルに入れて、ビューでそのバンドルを呼び出すことができます。例:

     bundles.Add(new ScriptBundle("~/bundles/myscripts").Include(
                    "~/Scripts/myscript1.js",
                    "~/Scripts/myscript2.js")); 

その場合、ビューには次のようになります。

    @Scripts.Render("~/bundles/myscripts")   

また、Web.configのコンパイルデバッグが次のようにfalseに設定されていることを確認してください。

  <compilation debug="false" />            

スクリプトがバンドルされ、縮小されていることを確認します。

アップデート

コメントと最近の経験から、なぜこの2つを一緒に使用したいのかがわかります。コミュニティで学ぶのに最適なケースです。:)ですから、リファクタリングのために戻ってくることにした場合は、最初からタイプミスがないことを確認します。それでも問題が解決しない場合は、問題をお知らせください。それに応じて回答を更新します。みんな、ありがとう!

于 2012-12-01T18:14:35.603 に答える
2

私はあなたが抱えている問題を再現することはできません

@section scripts {
    @Scripts.Render("~/bundles/movie")  
}

問題なく正常にレンダリングされます(そしてデバッグフラグを尊重します)私は@Mrchrefに同意し、パスを再検討します

一方、次のようなものを使用できます。

public static class Helpers
{
    public static HtmlString StaticContent(this System.Web.Mvc.UrlHelper url, string contentPath)
    {
        return new HtmlString(System.Web.Optimization.Scripts.Render(contentPath).ToString());
    }
}

使用法:

@section Scripts{
    @Url.StaticContent("~/assets/js/jquery")
}

私はそれをそのまま使用しないことをお勧めしますSystem.Web.Optimization.Scripts.Render(contentPath).ToString()、それは基本的にあなたが使用している(そして機能していない)同じ機能をレンダリングするのであなたは別の解決策を見つける必要があるでしょう。

いろいろSystem.Web.Optimization.BundleTable.Bundles試して、両方のバージョンを照会し、デバッグフラグを確認して、正しいコンテンツを提供できるかどうかを確認する必要があります。

于 2015-08-04T19:16:36.270 に答える
1

新しいビルドで問題が解決すると思います。そうでない場合は、次の手順に従ってください。

  • ステップ1:これをに追加するBundleConfig.cs

    bundles.Add(new ScriptBundle("~/bundles/common").Include("~/Scripts/common.js"));

  • ステップ2:この行をview/layout

    @Scripts.Render("~/bundles/common")

  • ステップ3:プロジェクトをビルドして実行します。

于 2017-08-01T17:08:01.977 に答える