This article has been localized into Spanish by the community.
El archivo ViewStart
En el artículo previo, aprendimos como definir y crear una vista Layout, la cual puede ser reusada en múltiples vistas. Un Layout es aplicado a una vista cuando es referenciado a través de la propiedad Layout, como esto:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Bajo circunstancias normales, tendrás que hacer esto para todas las páginas donde quieras usar este Layout - eso esta genial, porque te da la flexibilidad de usar múltiples layouts o incluso tener páginas que no usan un layout compartido. Sin embargo, para muchos proyectos, seguramente tendrás solamente un layout común o al menos alguno usaras en la mayoría de las situaciones. Afortunadamente para nosotros, hay una forma fácil de especificar un layout por defecto, el cual será usado a menos que específicamente lo sobreescribas dentro de la página: el archivo ViewStart.
¿Qué es el archivo ViewStart?
El archivo ViewStart es de hecho mucho mas como una vista y también tiene la misma extensión (.cshtml), así que para usarla, debes solo agregar una vista a tu carpeta Vistas llamada _ViewStart.cshtml. Lo veremos en un minuto, por ahora, debes saber que ASP .NET MVC automáticamente buscará un archivo ViewStart e lo interpretará antes de que interprete la vista o página actual. Esto te permite especificar funcionalidad común, como en este caso, donde lo usaremos para especificar un layout por defecto para todas las páginas. Pero primero, agreguemos un archivo ViewStart a nuestro proyecto:
Justo como los archivos Layout, el nombre del archivo debe ser prefijado con un guión bajo, para establecer que no es una vista regular:
El contenido de este archivo debe ser justo lo que necesitas que se haga antes que una vista sea interpretada - hay muchos casos para esto, pero el que estamos buscando definir es un layout por defecto, el cual siempre será usado a menos que lo sobreescribas específicamente. Puede ser hecho así:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Ahora, cuando sea que agregues una Vista a tu proyecto, puedes checar la opción "Usar una página layout", como es visto en la captura de pantalla, pero deja el campo de texto vació - tu layout automáticamente sera aplicado a la nueva vista y ¡no tienes que establecer la propiedad Layout manualmente para cada vista nunca mas!
Múltiples archivos ViewStart
Para la mayoría de los proyectos, seguramente tendrás solo un archivo ViewStart, el cual es comúnmente puesto en la raíz de tu carpeta Views. Sin embargo, para proyectos mas largos, podrás encontrar relevante tener mas de un archivo ViewStart, usualmente para dar instrucciones más especificas a las vistas en una carpeta especifica. Afortunadamente para nosotros, el sistema ViewStart es jerárquico, significando que ASP.NET MVC buscará primero por un archivo ViewStart en la misma carpeta que la Vista solicitada y luego se moverá hacia arriba en las carpetas, de forma jerárquica sí no es encontrado.
Desde luego puedes usar esto a tu ventaja para crear otro archivo ViewStart en una de tus subcarpetas de vista - este archivo ViewStart será entonces usado para todas las vistas encontradas en esa carpeta. La estructura podría entonces verse así:
Resumen
El archivo ViewStart te permite definir una lógica común la cual será automáticamente aplicada a todas tus vistas, como definir un layout por defecto, como demostramos en este artículo. Puedes también definir otros tipos de lógica común, como compartir información a lo largo de todas las vistas poniéndolas en el ViewData desde el archivo ViewStart y referenciandolo desde tus vistas. Discutiremos la funcionalidad ViewData en archivos siguientes.