9

私は次のものを持っています

bundles.Add(new ScriptBundle("~/bundles/scripts/common").Include(
                  "~/Scripts/jquery.validationEngine.js",
                  "~/Scripts/common.js"));

生成するもの

<script src="/bundles/scripts/common?v=9O0Yi3fV_GWpGyJQ_QYURiOYy6SEmxUQtkUVN4GXo2U1"></script>

でレンダリングすると

    <asp:PlaceHolder ID="PlaceHolderJs" runat="server">                
            <%: Scripts.Render("~/bundles/scripts/common") %>
    </asp:PlaceHolder>

type="text/javascript" がないため、これは有効な HTML ではありません。BundleCollection が script タグでこの要素を出力するようにするにはどうすればよいですか?

4

4 に答える 4

12

1 つの方法は、スクリプトのレンダリング方法を変更することです。

から:

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

に:

<script src="@BundleTable.Bundles.ResolveBundleUrl("~/bundles/scripts/common")" type="text/javascript"></script>

または、バンドルの実装方法によっては、次のものが必要になる場合があります。

<script src="@Microsoft.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/scripts/common")" type="text/javascript"></script>

または Web フォームの場合:

<script src="<%= Microsoft.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/scripts/common")%>" type="text/javascript"></script>

@Script.Render を使用してそれを行う方法がある場合は、それを確認したいと思います。

更新:あなたのコメントに応えて、この SO answerで指定されているように、のプレリリース版にはSystem.Web.Optimization、これを行うことができるというオプションがありますRenderFormat...しかし、上記のものは読みやすいと思いますこの特定のケース。

于 2013-03-27T15:41:53.663 に答える
0

マークされた回答は では正しくないと思いますがtype="text/css"、JavaScript では正しいと思います (質問のタイトルが誤解を招く可能性がありますか?)。CSSファイルの場合、使用する必要があります

@Styles.Render("~/bundles/styles/common")

ではありません @Scripts.Render(...)。その理由は、縮小が行われ、@Styles.Render(...)Cascading Stylesheet 構文のみを認識@Scripts.Render(...)し、JavaScript の縮小に特化しているためです。

于 2015-03-03T11:29:43.070 に答える