我有以下内容
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,因为它缺少类型=“text / javascript”.如何使BundleCollection在脚本标记中输出此元素?
解决方法
一种方法是更改渲染脚本的方式:
从:
@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的选项,可以让您这样做……但我认为上面的内容是这种特殊情况更容易阅读.