2013-08-12 8 views
11

Il titolo dice quasi tutto. Nel jquery-ui.css che definisce gli stili come:MVC jQuery UI Gli URL CSS non si risolvono dopo l'implementazione

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

Questo funziona bene in dev, ma una volta schierato l'url risolve più. Il sito è distribuito sotto il sito Web predefinito in IIS7. Quindi, nella console del browser posso vedere che la sua alla ricerca per l'immagine in

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

Ecco l'config bundle:

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

Come posso fare questi URL risolvono correttamente?

+0

Hai unito i tuoi file CSS? –

+0

Sì, sono tutti in bundle. – Swifty

+0

Puoi pubblicare parte rilevante del tuo BundleConfig? –

risposta

20

La risposta di Ufuk mi ha fatto riflettere. L'aggiunta del nome dell'app nella parte anteriore del percorso virtuale del pacchetto ha interrotto tutti i miei stili.

La funzione di raggruppamento prende tutti i file CSS all'interno dell'istruzione include e li riduce in un unico file situato nell'URL specificato nel percorso virtuale del pacchetto. Gli URL specificati nei file CSS inclusi in questo pacchetto utilizzano il percorso virtuale fornito dal bundle per creare l'URL in fase di runtime. Funziona bene in dev perché dev non utilizza i bundle, fa riferimento a ciascun file css individualmente/direttamente.

La soluzione era quella di creare un pacchetto con il percorso virtuale corretto:

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

Grazie Ufuk per la consulenza e orientamento.

+2

Solo una nota che il percorso virtuale del bundle di stile dovrebbe essere diverso dalla posizione effettiva ... questo mi ha bloccato per alcuni minuti. – Cody

+0

Per confermare, * assolutamente * non deve * utilizzare un file effettivo del percorso della cartella come nome del pacchetto. Ciò farà sì che IIS provi a caricare la directory o il file anziché il pacchetto. –

3

Si consiglia di aggiornare il percorso virtuale del pacchetto in questo modo:

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

questo modo URL relativi nel file CSS partirà da ~/appName. Tieni presente questo se hai altri URL relativi nel file site.css.

0

Dopo aver aggiornato la mia soluzione con nuGet package manager ai più nuovi jqueryui -files, versione 1.11, i file css di jqueryui non venivano caricati. Così ho controllato la classe BundleConfig solo a notare che jQueryUI CSS è stato ancora utilizzando vecchio percorso come:
"~/content/themes/base/jquery.ui.theme.css"
ho sostituito quelli con:
"~ /Content/themes/base/theme.css "
e poi la mia pagina è tornata in attività.

Problemi correlati