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>

这不是有效的 HTML,因为它缺少 type="text/javascript"。如何让 BundleCollection 在脚本标签中输出这个元素?

4

4 回答 4

12

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

从:

@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>

或者对于网络表单:

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

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

更新:响应您的评论,如this 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(...)知道级联样式表语法,@Scripts.Render(...)专门用于 JavaScript 缩小。

于 2015-03-03T11:29:43.070 回答
0

我已经这样解决了

>      bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
>                             "~/Scripts/node_modules/jquery/dist/jquery.min.js"));

我认为你需要用 ~/bundles/jquery 替换 ~/bundles/scripts/common

于 2021-01-31T21:19:11.063 回答
0

我已经这样解决了

bundles.Add(
    new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/node_modules/jquery/dist/jquery.min.js"
    )
);

我认为您需要替换~/bundles/scripts/common~/bundles/jquery

于 2021-01-31T21:26:17.533 回答