5

Por lo tanto, MVC 4 introduce el agrupamiento de scripts y estilos. Lo que permite esto:mvc4 agrupación de paquetes fuertemente tipados

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

utiliza entonces en una vista de afeitar como esto:

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

Mi pregunta es ¿por qué tengo que escribir "~/bundles/mobile"? ¿Hay alguna manera de obtener inteligencia para tener un objeto fuertemente tipado para captar? De lo contrario, tendré que buscarlo para asegurarme de llamarlo de la misma manera.

me gustaría hacer algo como esto: (Sé que esto no se compilará esta manera, es sólo un ejemplo)

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 algo a ese efecto.

Editar: la respuesta es tan simple. Como @Hao Kung señala @Styles.Render simplemente toma una ruta de cadena url. Creé una clase para mantener los pathes.

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 
} 

en cualquier página a continuación, sólo tiene que hacer

@Styles.Render(bundles.jqueryUi) 

ahí lo tienen. Un pequeño esfuerzo adicional de tu parte, pero al menos está fuertemente tipado ahora.

Respuesta

2

Las herramientas Render Scripts/Styles Render no se limitan a representar referencias a paquetes, sino que resuelven cualquier URL, por lo que la única forma de que el ayudante detecte que quiere referenciar un paquete es pasando la ruta virtual de el haz.

+0

ah sí, por supuesto! Me siento estúpido ahora – Eonasdan

Cuestiones relacionadas