5

Quindi MVC 4 introduce il raggruppamento di script e stile. Che consente per questo:mvc4 raggruppamento bundle fortemente tipizzati

public static void RegisterBundles(BundleCollection bundles) 
    { 
    bundles.Add(new ScriptBundle("~/bundles/mobile").Include(
        "~/Scripts/jquery.mobile-*")); 

quindi utilizzato in una vista rasoio come questo:

@Scripts.Render("~/bundles/mobile") 

mia domanda è perché devo digitare "~/bundles/mobile"? C'è un modo per ottenere l'intelligenza di avere un oggetto fortemente tipizzato da raccogliere? Altrimenti devo andare a cercarlo per assicurarmi che lo chiamo la stessa cosa.

Vorrei fare qualcosa di simile: (so che questo non si compila in questo modo, è solo un esempio)

public static void RegisterBundles(BundleCollection bundles) 
    { 
    Bundle mobile = new Bundle("mobile"); 
    mobile.AddFile("w/e") 
    bundles.Add(mobile); 

//in page: 
@Scripts.Render(BundleConfig.mobile) 

o qualcosa in tal effetto.

Modifica: la risposta è così semplice. Come @Hao Kung indica @Styles.Render prende semplicemente un percorso di stringa url. Ho creato una classe per mantenere i percorsi.

public class bundles 
{ 
    #region Javascript 
    public static string scripts = "~/bundles/scripts"; 
    ... 
    #endregion 

    #region CSS 

    public static string css = "~/Content/css"; 
    public static string jqueryUi = "~/Content/themes/base/css"; 
    ... 
    #endregion 
} 

in qualsiasi pagina, allora è sufficiente fare

@Styles.Render(bundles.jqueryUi) 

gioco è fatto. Un piccolo sforzo in più da parte tua, ma almeno è fortemente digitato ora.

risposta

2

Gli helper Render Scripts/Styles Render non si limitano al rendering di riferimenti a bundle, ma risolvono qualsiasi URL, quindi l'unico modo per l'helper di rilevare che si intende fare riferimento a un bundle è passare il percorso virtuale di il pacchetto.

+0

ah sì certo! Mi sento stupido ora – Eonasdan