2013-08-12 5 views
11

Tytuł prawie wszystko mówi. W jQuery ui.css definiuje style jak:MVC jQuery UI Adresy CSS nie są rozpoznawane po wdrożeniu

ui-widget-content { 
border: 1px solid #aaaaaa/*{borderColorContent}*/; 
background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/* 
color: #222222/*{fcContent}*/; 
} 

to działa prawidłowo w dev, ale kiedy wdrożony URL już nie ustąpienia objawów. Witryna jest wdrożona w domyślnej witrynie sieci Web w IIS7. Więc w konsoli przeglądarki widzę, że jej szukają obrazu w

http:// (servername)/(appName)/Content/images/ui-bg_glass_75_e6e6e6_1x400.png
zamiast
http:// (serverName)/(appName)/content/themes/base/images...

Oto config bundle:

bundles.Add(new StyleBundle("~/Content/css").Include(
      "~/Content/themes/base/jquery-ui.css", 
      "~/Content/site.css" 
)); 

Jak mogę rozwiązać te adresy poprawnie?

+0

Pakowałeś swoje pliki CSS? –

+0

Tak, wszystkie są w pakiecie. – Swifty

+0

Czy możesz umieścić odpowiednią część swojej BundleConfig? –

Odpowiedz

20

Odpowiedź Ufuk mnie zmusiła. Dołączanie nazwy aplikacji na początku ścieżki wirtualnej pakietu zepsuło wszystkie moje style.

Funkcja pakowania pobiera wszystkie pliki CSS wewnątrz instrukcji include i zamienia je w jeden plik znajdujący się pod adresem URL określonym w ścieżce wirtualnej pakietu. Adresy URL określone w plikach CSS zawartych w tym pakunku używają danej ścieżki wirtualnej pakietu do budowania jego adresu URL w czasie wykonywania. To działa dobrze w dev, ponieważ dev nie wykorzystuje pakietów, odwołuje się do każdego pliku css indywidualnie/bezpośrednio.

Rozwiązaniem było stworzenie zawiniątko z prawidłowym ścieżki wirtualnej:

bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
        "~/Content/themes/base/jquery-ui.css")): 

Ufuk Dzięki za radę i wskazówki.

+2

Po prostu zwróć uwagę, że wirtualna ścieżka pakietu stylów powinna być inna niż rzeczywista lokalizacja ... to utknęło mi na kilka minut. – Cody

+0

Aby potwierdzić, absolutnie * nie należy * używać rzeczywistego pliku ścieżki folderu jako nazwy pakietu. Spowoduje to, że usługi IIS będą próbowały załadować katalog lub plik zamiast pakietu. –

3

Należy zaktualizować ścieżkę wirtualną Twojego Bundle jest tak:

bundles.Add(new StyleBundle("~/appName/Content/css").Include(
      "~/Content/themes/base/jquery-ui.css", 
      "~/Content/site.css" 
)); 

ten sposób względne adresy URL w pliku CSS rozpocznie się od ~/appName. Należy o tym pamiętać, jeśli w pliku site.css istnieją inne względne adresy URL.

0

Po tym, jak zaktualizowałem swoje rozwiązanie za pomocą menedżera pakietów nuGet do najnowszej wersji jqueryui -files, wersja 1.11, pliki css jqueryui nie zostały wczytane. Więc sprawdziłem klasę BundleConfig tylko zauważyć, że jQueryUI css był wciąż przy starej ścieżki jak:
"~/content/themes/bazy/jquery.ui.theme.css"
Wymieniłem te z:
„~ /Content/themes/base/theme.css "
, a następnie moja strona wróciła do biznesu.