MVC jQuery UI CSS URL-адреса не разрешаются после развертывания
Название довольно много говорит обо всем.
В jquery-ui.css он определяет такие стили, как:
ui-widget-content {
border: 1px solid #aaaaaa/*{borderColorContent}*/;
background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*
color: #222222/*{fcContent}*/;
}
Это отлично работает в dev, но после его развертывания URL-адрес больше не разрешается. Сайт развертывается на веб-сайте по умолчанию в IIS7. Поэтому в консоли браузера я вижу, что он ищет изображение в
http:// (servername)/(appName)/Content/images/ui-bg_glass_75_e6e6e6_1x400.png
вместо
http:// (serverName)/(appName)/content/themes/base/images...
Вот конфигурация связки:
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/themes/base/jquery-ui.css",
"~/Content/site.css"
));
Как я могу правильно настроить эти URL-адреса?
Ответы
Ответ 1
Ответ Ufuk заставил меня думать. Добавление имени приложения в начало виртуального пути пакета привело к потере всех моих стилей.
Функция bundle принимает все CSS файлы внутри оператора include и минимизирует их в один файл, расположенный по URL-адресу, указанному в виртуальном пути пакета. URL-адреса, указанные в файлах CSS, включенных в этот пакет, используют пул, заданный виртуальным путем, для создания URL-адреса во время выполнения. Это отлично работает в dev, потому что dev не использует пакеты, он ссылается на каждый файл css отдельно/напрямую.
Решение заключалось в создании пакета с правильным виртуальным путем:
bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
"~/Content/themes/base/jquery-ui.css")):
Спасибо Ufuk за советы и рекомендации.
Ответ 2
Вы должны обновить виртуальный путь пакета следующим образом:
bundles.Add(new StyleBundle("~/appName/Content/css").Include(
"~/Content/themes/base/jquery-ui.css",
"~/Content/site.css"
));
Таким образом, относительные URL-адреса в вашем файле CSS начинаются с ~/appName
. Имейте это в виду, если у вас есть другие относительные URL-адреса в файле site.css.
Ответ 3
После того как я обновил свое решение с помощью менеджера пакетов nuGet до новейших jqueryui файлов, версия 1.11, css файлы jqueryui не загрузились. Поэтому я проверил класс BundleConfig, чтобы заметить, что jqueryui css все еще использовал старый путь, например:
" ~/Content/темы/база/jquery.ui.theme.css "
Я заменил их:
" ~/Content/темы/база/theme.css "
а затем моя страница снова была в бизнесе.