Estoy usando _viewstart.cshtml para asignar automáticamente el mismo diseño Razor a mis vistas.
Es un archivo simple muerto en la raíz de mi carpeta Vistas que se ve así:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Esto es más SECO que agregar la directiva @Layout a cada vista.
Sin embargo, esto plantea un problema para las vistas parciales de Razor , porque ejecutan el contenido de _viewstart.cshtml y, por lo tanto, se asignan incorrectamente un diseño, lo que hace que, um, ya no sean parciales.
Aquí hay un proyecto hipotético, que muestra el archivo _viewstart.cshtml, el archivo compartido _layout.shtml y una vista parcial ("AnonBar.cshtml").
Actualmente, la forma en que estoy evitando esto es agregando la siguiente línea a cada vista parcial:
@{
Layout = "";
}
Esta parece ser la forma incorrecta de denotar una vista como parcial en Razor. (Tenga en cuenta que, a diferencia del motor de vista de formularios web, la extensión del archivo es la misma para vistas parciales).
Otras opciones que consideré pero que son aún peores:
- Poner todas las vistas parciales en una carpeta común, para que puedan compartir un _viewstart.cshtml común. Esto rompe la convención de que las vistas estén en la misma carpeta que su controlador.
- No usar vistas parciales.
¿Es esto algo que el equipo del motor de visualización Razor todavía está desarrollando o me falta un concepto fundamental?