10

我正在尝试使用 Microsoft 的 Web 优化框架呈现 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

4

1 回答 1

22

一种简单的方法是使用Scripts.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")
于 2014-02-12T16:57:58.413 回答