Подтвердить что ты не робот

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-адреса?

4b9b3361

Ответ 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 "
а затем моя страница снова была в бизнесе.