Есть ли простой способ рендеринга абсолютных URL-адресов с инфраструктурой веб-оптимизации Microsoft/script?
Я пытаюсь отобразить пакет JavaScript с использованием инфраструктуры веб-оптимизации Microsoft, например:
@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>
Как я могу связать script рендеринг абсолютного URL вместо этого? Я не мог найти способ сделать это, просматривая документы в MSDN. Вот что мне в конечном итоге понравится:
<script src="http://my.site.com/assets/bundle.js?v=mGDOiNaiTrSfcNq41OoA7A_BcN8PrXuMbfl-TE84HVY1"></script>
Является ли это в рамках, или мне нужно катить вспомогательный метод с помощью Script.Url
?
Ответы
Ответ 1
Один простой способ: 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")