有没有一种简单的方法来使用Microsoft Web Optimization框架/脚本捆绑呈现绝对URL?

时间:2014-02-12 15:04:04

标签: asp.net bundling-and-minification scriptbundle

我正在尝试使用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推送辅助方法?

1 个答案:

答案 0 :(得分:20)

一种简单的方法是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")