2012-03-08 19 views
11

Sono nuovo di MVC quindi ho pensato di iniziare un nuovo progetto e provare alcune delle nuove funzionalità di MVC4. Ho due file CSS nella mia directory Content, normalise_mini e site.css. Quando uso il seguente codice:ResolveBundleUrl non risolve tutti i file?

<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" /> 

ci vuole solo la mia site.css file non il mio file normalizzazione. Ho il seguente nel mio inizio app:

protected void Application_Start() 
{ 

    // Remove all other view engines except razor: 
    ViewEngines.Engines.Clear(); 
    ViewEngines.Engines.Add(new RazorViewEngine()); 

    AreaRegistration.RegisterAllAreas(); 

    RegisterGlobalFilters(GlobalFilters.Filters); 
    RegisterRoutes(RouteTable.Routes); 

    BundleTable.Bundles.RegisterTemplateBundles(); 
    BundleTable.Bundles.EnableDefaultBundles(); 
} 

Devo creare un pacchetto per ogni file css (come this persona sta facendo)? O dovrebbe solo trovare tutti i file CSS automaticamente (che mi aspetterei di essere il comportamento predefinito). Potrebbe valere la pena di notare che ho iniziato questo progetto come un sito Web vuoto basato sul motore di visualizzazione Razor (che in realtà non era affatto vuoto: /)

Grazie in anticipo


Aggiornamento

In base al collegamento pubblicato, devo commentare la riga che registra i gruppi di modelli. Ad esempio:

protected void Application_Start() 
{ 

    // Remove all other view engines except razor: 
    ViewEngines.Engines.Clear(); 
    ViewEngines.Engines.Add(new RazorViewEngine()); 

    AreaRegistration.RegisterAllAreas(); 

    RegisterGlobalFilters(GlobalFilters.Filters); 
    RegisterRoutes(RouteTable.Routes); 

    //BundleTable.Bundles.RegisterTemplateBundles(); // This is not needed 
    BundleTable.Bundles.EnableDefaultBundles(); 
} 

Ora funziona. I miei pensieri sono che le due linee dovrebbero coesistere senza problemi. Immagino che sia di design, ma è un cattivo design?

risposta

10

Qualcun altro ha già risposto a questa domanda:

http://forums.asp.net/t/1776599.aspx/1?MVC+4+0+Bundling+Minification+not+working+

UPDATE:

Qualcuno ha espresso la preoccupazione che un collegamento non può essere sufficiente per rispondere alla domanda. Sebbene ritenga che qualcuno che visita questa pagina debba leggere il thread collegato, la risposta breve è rimuovere la riga BundleTable.Bundles.RegisterTemplateBundles() da Application_Start() e sostituirla con BundleTable.Bundles.EnableDefaultBundles()

+0

Grazie alla soluzione funziona. Sicuramente, le due opzioni dovrebbero funzionare insieme? –

+0

Sfortunatamente, non so abbastanza su MVC 4 per rispondere a quella domanda specifica in cima alla mia testa. La mia ipotesi è che dovrebbe ma potrebbe essere un bug in MVC 4. – evasilchenko

+0

Che diamine :) Funziona come un fascino ora! grazie –

0

Nota: EnableDefaultBundles è stato rimosso dalla versione 1.0.0 RTM di Optmization, è comunque possibile ottenere la funzionalità equivalente tramite l'impostazione dei propri DynamicFolderBundles. Ma in generale è probabile che questo causi problemi (di solito ci sono delle dipendenze nei file che non vengono catturati quando includi in blocco * .js), quindi passiamo all'impostazione del bundle esplicita e al di fuori di EnableDefaultBundles.

Per la migliore fino a data docs/tutorial: Codeplex Documentation

+0

Penso che dovresti aggiornare la documentazione ad un certo punto. La maggior parte degli articoli scritti da MS è obsoleta. – LeftyX

Problemi correlati