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 MyServiceComo referencia visual, la pinta que podría tener un archivo _ViewImports.cshtml en un proyecto MVC 6 sería la siguiente:
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