Is there an easy way to render absolute URLs with Microsoft Web Optimization framework / script bundling?

asp.net, bundling-and-minification, scriptbundle

Solution

One easy way is with Scripts.RenderFormat:

@Scripts.RenderFormat("<script src='http://my.site.com{0}'></script>","~/assets/bundle.js")

A way to get URL from request. Couldn't seem to use multiple parameters with the RenderFormat, so that's why it looks a little ugly:

 @Scripts.RenderFormat("<script src='//" + @Request.Url.Host + "/{0}'></script>", "~/assets/bundle.js")

or better yet, centralize a function to get the correct path (using a fictional function):

@Scripts.RenderFormat("<script src='" + @Tools.GetRootURL() + "{0}'></script>", "~/assets/bundle.js")

Also, you don't need the `.js` on the bundle:

bundles.Add(new ScriptBundle("~/assets/bundle")

Problem

I'm trying to render a JavaScript bundle using Microsoft's Web Optimization framework, like this: ``` @Scripts.Render("~/assets/bundle.js") ``` And building a small bundle, like this: ``` public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/assets/bundle.js") .Include( "~/scripts/jquery-2.1.0.min.js", "~/scripts/somescript.js" )); ... } ``` But when optimizations are on, it only renders a relative URL, like this: ``` <script src="/assets/bundle.js?v=mGDOiNaiTrSfcNq41OoA7A_BcN8PrXuMbfl-TE84HVY1"></script> ``` How can I have script bundling render an absolute URL instead? I couldn't find a way to do this looking through the docs on MSDN. This is what I would ultimately like: ``` <script src="http://my.site.com/assets/bundle.js?v=mGDOiNaiTrSfcNq41OoA7A_BcN8PrXuMbfl-TE84HVY1"></script> ``` Is this in the framework, or do I have to roll a helper method with `Script.Url`?

Original source

Related problems