MVC4 связывание/минимизация с условными комментариями IE
Я пытаюсь использовать новый "связывание и минимизацию" MVC4.
Для условных комментариев IE я все еще делаю это по-старому: <!--[if lt IE 9]><link href=.../><![endif]-->
или <!--[if lt IE 9]>@Styles.Render("~/foo")<![endif]-->
, но я, похоже, не получаю автоматическую обработку отладки/выпуска.
Есть ли встроенный способ сделать это? Как другие это делают?
EDIT:
Также было бы здорово включить теги <noscript>
внутри выводимого вывода (используется для резервных копий).
Ответы
Ответ 1
Пока я не найду лучший способ, я создал класс адаптера под названием Bundles
, который имеет метод:
public static IHtmlString RenderStylesIe(string ie, params string[] paths) {
var tag = string.Format("<!--[if {0}]>{1}<![endif]-->", ie, Styles.Render(paths));
return new MvcHtmlString(tag);
}
Существует аналогичный метод для скриптов. Представление вызывает их как таковые:
@Bundles.RenderStylesIe("lt IE 9", "~/Content/foo")
@Bundles.RenderScriptsIe("lte IE 7", "~/Scripts/bar")
Если есть лучший способ, я буду благодарен за совет.
Ответ 2
Скоро будет выпущено обновление 1.1-alpha1, которое будет поддерживать ваше собственное форматирование тегов с помощью помощников сценариев/стилей.
Появится новое свойство DefaultTagFormat, которое по умолчанию установлено на:
"<script src="{0}"></script>"
Также существует метод RenderFormat, который также принимает формат тега. Вы должны иметь возможность контролировать рендеринг немного больше с ними. Это то, что вы пытаетесь сделать в строке формата?
Ответ 3
Альтернатива, которую я нашел, была здесь: https://coderwall.com/p/5zqvkg
Это вопрос предпочтения
(Все еще код любви выше - он намного чище и легче читается
@Bundles.RenderStylesIe("lt IE 9", "~/Content/foo")
@Bundles.RenderScriptsIe("lte IE 7", "~/Scripts/bar")
)