Комплектация .NET и пользовательская среда выполнения {заполнители}?

У меня разные файлы css в зависимости от браузера и устройства. Одним из подходов к объединению может быть регистрация каждой комбинации «phone.ie», «desktop.ie», «phone.chrome» и т. д. и наличие метода Render string.format для правильного пакета («~/content/{0} .{1}", устройство, браузер). Это сработает, но требуется гораздо больше обслуживания, чем необходимо. Дополнительные файлы css означают регистрацию большего количества пакетов.

Что было бы действительно здорово, если бы я мог зарегистрировать один пакет:

        bundles.Add(new StyleBundle("~/content/css")
            .Include("~/content/css/styles.{device}.{browser}.css"));

и рендерить просто

@Styles.Render("~/content/css")

Где {device} и {browser} — это заполнитель для переменной времени выполнения. Как я мог это сделать? Существует заполнитель {версия}, используемый для пакетов jQuery, но он не кажется очень расширяемым для пользовательских значений.

Было бы неплохо, возможно, накормить рендер словарем

@Styles.Render("~/content/css", new { device = runtimeDevice, browser = runtimeBrowser })

person Levitikon    schedule 11.06.2014    source источник
comment
Кроме того, почему вы пытаетесь использовать разные CSS для разных браузеров? Это идет вразрез с направлением, в котором движется индустрия.   -  person Mister Epic    schedule 11.06.2014
comment
Я знаю @ChrisHardie, это то, что у нас есть. Это не значит, что мне это должно нравиться. Определенно есть планы перейти на что-то лучше в будущем.   -  person Levitikon    schedule 11.06.2014


Ответы (1)


В ASP.NET Bundling and Optimization нет встроенной поддержки пользовательских токенов. Я рекомендую написать собственный метод расширения, такой как bundles.AddFormattedBundle(...), который принимает необходимые параметры и выполняет свою собственную замену. Все это будет пользовательский код, который вам придется написать.

Чтобы подать предложение по объединению и оптимизации ASP.NET, посетите сайт: https://aspnetoptimization.codeplex.com/workitem/list/basic

person Eilon    schedule 11.06.2014