ASP.NET Mvc 4 Используйте преимущества пакета для Url.Content

Можно ли мне это сделать?

Некоторые из преимуществ комплектации:

  • Минимизация
  • сжатие Gzip
  • Запрос имеет токен-параметр для обработки файлов версий (кеш).

На моем сайте я использую множество пакетов, но на некоторых страницах у меня есть только 1 script, и я не думаю, что я должен создать пакет только для 1 script. Есть ли способ использовать эти три преимущества с помощью метода Url.Content.

Мое утопическое решение было бы создать что-то (возможно, в web.config), и всякий раз, когда Url.Content называется, он добавляет эту функциональность. Используя его одним из следующих способов:

(Второй - потому, что я использую Razor 2)

Если это невозможно, я могу сделать метод расширения для UrlHelper для добавления этой функции.

Спасибо!

1 ответ

Нет ничего плохого в создании пакета с одним файлом, чтобы получить преимущества минимизации и управления версиями. Вам также придется использовать помощник Scripts.Render, в настоящее время в UrlHelper нет поддержки для этого, но, как вы уже упоминали, вы можете написать метод расширения для вызова в помощник скриптов.

Обновление (по OP)

Вот мой метод расширения для тех, кто хочет его использовать:

public static IHtmlString DynamicScriptsBundle(this HtmlHelper htmlHelper, string nombre, params string[] urls)
{ string path = string.Format("~/{0}", nombre); if (BundleTable.Bundles.GetBundleFor(path) == null) BundleTable.Bundles.Add(new ScriptBundle(path).Include(urls)); return Scripts.Render(path);
}
public static IHtmlString DynamicStylesBundle(this HtmlHelper htmlHelper, string nombre, params string[] urls)
{ string path = string.Format("~/{0}", nombre); if (BundleTable.Bundles.GetBundleFor(path) == null) BundleTable.Bundles.Add(new StyleBundle(path).Include(urls)); return Styles.Render(path);
}

licensed under cc by-sa 3.0 with attribution.