我有以下
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在脚本标记中输出此元素?
答案 0 :(得分:11)
一种方法是更改渲染脚本的方式:
自:
@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我想看到它。
更新:在System.Web.Optimization
的预发布版本中,根据this SO answer中的说明回复您的评论,有一个名为RenderFormat
的选项这也会让你这样做......但我认为上面的内容对于这个特殊情况更容易阅读。
答案 1 :(得分:0)
我认为type="text/css"
标记的答案不正确,对JavaScript来说是正确的(问题标题可能会误导?)。对于CSS文件,您应该使用
@Styles.Render("~/bundles/styles/common")
和不 @Scripts.Render(...)
。原因是缩小已完成,只有@Styles.Render(...)
知道级联样式表语法,@Scripts.Render(...)
专门用于JavaScript缩小。
答案 2 :(得分:0)
我是这样解决的
> bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
> "~/Scripts/node_modules/jquery/dist/jquery.min.js"));
我认为你需要用 ~/bundles/jquery 替换 ~/bundles/scripts/common
答案 3 :(得分:0)
我是这样解决的
bundles.Add(
new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/node_modules/jquery/dist/jquery.min.js"
)
);
我认为您需要将 ~/bundles/scripts/common
替换为 ~/bundles/jquery