ASP.NET MVC 4.

В настоящее время я использую ASP.NET MVC 4 CSS/JavaScript Optimizer. Он отлично работает с моим собственным CSS/JavaScript, но я также хочу использовать его с плагинами. Каждый плагин имеет свою собственную папку:

~/Content/css // my own css, ok
~/Content/plugins/rateit
~/Content/plugins/chosen
~/Content/plugins/...

Я могу добавить эти файлы в оптимизатор:

var bundle = new Bundle("~/Content/opt", new CssMinify());
...
bundle.AddFile("~/Content/plugins/chosen/chosen.css", "*.css");
BundleTable.Bundles.Add(bundle);

Но в этом случае, после оптимизации, css находится в другой папке, и браузер больше не может найти фоновые изображения. Есть ли какое-либо решение для автоматического изменения пути css для фоновых изображений?

Я могу скопировать все плагины в одну папку, но с большим количеством плагинов, это не очень хорошая идея.

Ответ 1

Можете взглянуть на RequestReduce. Это другой .net-based minifier/bundler, и он будет переписывать все URL-адреса в minified/bundled css, чтобы быть абсолютным. Сюда входят шрифты и фоновые изображения. Он также автоматически расширит импорт в css. Кроме того, где он думает, что это возможно, он будет обрабатывать фоновые изображения.

Ответ 2

У меня была такая же проблема... Я использовал для сборки jQuery UI CSS с моим собственным, но, как вы упомянули, плагины используют его собственный каталог. В моем случае это было:

~/Content/Site.css
~/Content/themes/base/*.css

Этот миниатюрный пакет ищет все изображения в ~/Content/, поэтому пользовательский интерфейс jQuery перестает работать должным образом. Таким образом, единственный способ разрешить это - отделить эти CSS (мой собственный и пользовательский интерфейс jQuery).

BTW: До этого я не понимал, почему CSS в комплекте (в шаблоне MVC4) как ~/content/ вместо ~/bundles/. Теперь я знаю, что это из-за проблемы с пути к изображениям в каталоге Content.