Páginas

22 de septiembre de 2015

El archivo _ViewImports en MVC 6

imageDesde la llegada de Razor, hace ya bastante tiempo, usamos en MVC el archivo _ViewStart.cshtml de las carpetas de vistas de nuestra aplicación para introducir código de inicialización de éstas. Era un buen lugar para establecer propiedades como el Layout de forma genérica, sin tener que hacerlo en cada una de las vistas que se encontraran por debajo en el árbol de directorios en el que se definía.

En MVC 6 se le ha unido un compañero llamado _ViewImports.cshtml, cuya finalidad y funcionamiento es parecido al tradicional ViewStart, porque se procesa antes de ejecutar una vista e igualmente afecta a todas las vistas que se encuentren por debajo de este archivo en el árbol de directorios, aunque aporta algunas diferencias bastante interesantes. Comentamos a continuación los aspectos más destacables.
En primer lugar, destacaremos que _ViewImports.cshtml se procesa en todas las vistas. Esto es bastante interesante porque abre el ámbito de aplicación de este nuevo mecanismo; recordad que _ViewStart sólo era ejecutado en las vistas completas y no en parciales o layouts.



El objetivo de _ViewImports no es contener código, sino directivas que serán aplicadas a todas las vistas (sean completas, parciales o layouts). Es decir, aquí no encontraremos bloques de código ejecutables como en _ViewStart, sino directivas @algo de Razor.

En este archivo encontraremos “usings” de espacios de nombres, de forma que en las vistas afectadas tendremos acceso directo a los miembros definidos en ellos sin necesidad de añadir @using en cada una de ellas. Esto es importante porque en versiones anteriores de MVC esto sólo podía hacerse desde el archivo Web.config presente en las carpetas de vistas y, como sabemos, este archivo de configuración pasó a la historia.

También encontraremos ahí directivas @addTagHelpers, que es el nuevo mecanismo que permite añadir referencias a paquetes de Tag Helpers que utilicemos en las vistas afectadas por _ViewImports. Pronto veremos algún post sobre ellos, pero de momento basta con saber que es un mecanismo similar a los helpers de toda la vista, pero usando sintaxis más cercana al HTML. Podéis leer algo sobre ellos aquí.

Asimismo, desde este archivo será posible inyectar servicios que estarán disponibles para todas las vistas afectadas utilizando la directiva @inject de MVC 6. Por ejemplo, si incluimos en _ViewImports.cshtml la siguiente línea, todas las vistas tendrán una propiedad llamada MyService que el servicio de inyección de dependencias del framework habrá poblado con una instancia de IMyService:
@inject IMyService MyService
Como referencia visual, la pinta que podría tener un archivo _ViewImports.cshtml en un proyecto MVC 6 sería la siguiente:

El archivo _ViewImports

Y por último, sólo comentar que hasta hace poco este archivo se llamaba _GlobalImports.cshtml, pero se decidió cambiar el nombre porque podía resultar confuso, dado que en realidad no se tratan de importaciones globales sino que afectan sólo a determinadas vistas según su ubicación. Es importante tener esto en cuenta porque aún hay muchos artículos y contenidos por la red que hacen referencia a la denominación antigua.

Publicado en Variable not found.



from Variable not found http://www.variablenotfound.com/2015/09/el-archivo-viewimports-en-mvc-6.html
via IFTTT