我正在尝试使用 Microsoft 的 Web Optimization 框架呈现 JavaScript 包,如下所示:
@Scripts.Render("~/assets/bundle.js")
并构建一个小包,如下所示:
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/assets/bundle.js")
.Include(
"~/scripts/jquery-2.1.0.min.js",
"~/scripts/somescript.js"
));
...
}
但是当优化开启时,它只呈现相对 URL,如下所示:
<script src="/assets/bundle.js?v=mGDOiNaiTrSfcNq41OoA7A_BcN8PrXuMbfl-TE84HVY1"></script>
如何让脚本捆绑呈现绝对 URL?我通过 MSDN 上的文档找不到解决此问题的方法。这就是我最终想要的:
<script src="http://my.site.com/assets/bundle.js?v=mGDOiNaiTrSfcNq41OoA7A_BcN8PrXuMbfl-TE84HVY1"></script>
这是在框架中吗,还是我必须使用一个辅助方法Script.Url
?
一种简单的方法是脚本.RenderFormat:
@Scripts.RenderFormat("<script src='http://my.site.com{0}'></script>","~/assets/bundle.js")
一种从请求中获取 URL 的方法。似乎无法在 RenderFormat 中使用多个参数,所以这就是它看起来有点难看的原因:
@Scripts.RenderFormat("<script src='//" + @Request.Url.Host + "/{0}'></script>", "~/assets/bundle.js")
或者更好的是,集中一个函数来获取正确的路径(使用虚构的函数):
@Scripts.RenderFormat("<script src='" + @Tools.GetRootURL() + "{0}'></script>", "~/assets/bundle.js")
另外,您不需要.js
捆绑包上:
bundles.Add(new ScriptBundle("~/assets/bundle")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)