使用System.Web.Optimization时,如何将type ="text/javascript"添加到脚本标记中

jon*_*dow 8 asp.net xhtml bundling-and-minification system.web.optimization

我有以下内容

bundles.Add(new ScriptBundle("~/bundles/scripts/common").Include(
                  "~/Scripts/jquery.validationEngine.js",
                  "~/Scripts/common.js"));
Run Code Online (Sandbox Code Playgroud)

哪个生成

<script src="/bundles/scripts/common?v=9O0Yi3fV_GWpGyJQ_QYURiOYy6SEmxUQtkUVN4GXo2U1"></script>
Run Code Online (Sandbox Code Playgroud)

使用时渲染

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

哪个不是有效的HTML,因为它缺少类型="text/javascript".如何使BundleCollection在脚本标记中输出此元素?

Mik*_*Dev 11

一种方法是更改​​渲染脚本的方式:

从:

@Scripts.Render("~/bundles/scripts/common")
Run Code Online (Sandbox Code Playgroud)

至:

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

或者,根据您实施捆绑的方式,您可能需要:

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

或者对于网络表单:

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

虽然如果有办法使用@ Script.Render我想看到它.

更新:响应您的评论,如本SO答案中所述,在预发布版本中System.Web.Optimization,有一个叫做的选项RenderFormat也可以让你这样做...但我觉得上面的内容更容易阅读这个特例.