13

Estoy tratando de usar la nueva "agrupación y minificación" de MVC4.agrupación MVC4/minificación con comentarios condicionales de IE

Para comentarios condicional de IE, sigo haciéndolo de la manera antigua: <!--[if lt IE 9]><link href=.../><![endif]--> o <!--[if lt IE 9]>@Styles.Render("~/foo")<![endif]--> pero no parece que obtenga el manejo automático de depuración/liberación.

¿Hay una manera incorporada de hacer esto? ¿Cómo están haciendo esto los demás?

EDIT:
También sería genial poder incluir etiquetas <noscript> dentro de la salida representada (utilizada para los retrocesos).

Respuesta

15

Hasta que encuentre una mejor manera, hice una clase adaptador llamado Bundles, que tiene el método:

public static IHtmlString RenderStylesIe(string ie, params string[] paths) { 
    var tag = string.Format("<!--[if {0}]>{1}<![endif]-->", ie, Styles.Render(paths)); 
    return new MvcHtmlString(tag); 
} 

Hay un método similar para las secuencias de comandos. Una vista los llama como tal:

@Bundles.RenderStylesIe("lt IE 9", "~/Content/foo") 
@Bundles.RenderScriptsIe("lte IE 7", "~/Scripts/bar") 

Si hay una manera mejor, se lo agradecería el consejo.

+0

De regreso a este enfoque, si tengo un grupo de estilos o scripts que necesitan "if lt IE 9" y "if lte IE 7", entonces estos deben ponerse en paquetes separados, y renderizados por separado . –

+0

También no está seguro de una manera elegante de hornear en la etiqueta '

+0

Encontré esta solución bastante elegante –

5

La próxima actualización 1.1-alpha1 tendrá soporte para formatear su propia etiqueta con los ayudantes de Scripts/Styles.

Hay una nueva propiedad que es DefaultTagFormat por conjunto predeterminado a:

"<script src="{0}"></script>"

También hay un método RenderFormat que se lleva en el formato de etiqueta también. Debería poder controlar el renderizado un poco más con estos. ¿Es posible lo que intenta hacer en una cadena de formato?

+0

No estoy seguro sin ver una muestra/firma, pero no estoy seguro de si podría funcionar con sus nuevos cambios, ya que los comentarios condicionales se colocan fuera de la etiqueta script/estilo. La forma que describí en mi respuesta no es ideal, pero funciona muy bien. –

+0

Además, ¡y esto es solo preferencia personal !, me gusta la capacidad de usar mi clase para llamar 'Bundles' en lugar de' Styles' y 'Scripts'. Es más autónomo. Sin embargo, los nuevos métodos que describes son muy útiles. –

+2

Básicamente, el formato sería lo que usaremos para generar etiquetas de script/enlace individuales. Entonces podría hacer algo como: Scripts.RenderFormat (" {0} ", rutas) –

-2

Una alternativa que encontré fue aquí: https://coderwall.com/p/5zqvkg

Es una cuestión de preferencia

(todavía nos encanta el código de seguridad - es mucho más limpio y lee más fácil

@Bundles.RenderStylesIe("lt IE 9", "~/Content/foo") 
@Bundles.RenderScriptsIe("lte IE 7", "~/Scripts/bar") 

)

+0

El enlace de arriba publica una solución que no funciona en la práctica – WebDever

Cuestiones relacionadas