sintaxis - ¿Forma correcta de usar_viewstart.cshtml y vistas de Razor parciales?
razor mvc (1)
Estoy usando _viewstart.cshtml para asignar automágicamente el mismo diseño de Razor a mis vistas.
Es un archivo muerto simple 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, ya que ejecutan el contenido de _viewstart.cshtml y, por lo tanto, se asignan un diseño incorrectamente, lo que hace que, um, ya no sean parciales.
Aquí hay un proyecto hipotético que muestra el archivo _viewstart.cshtml, el archivo _layout.shtml compartido y una vista parcial ("AnonBar.cshtml").
Actualmente, la forma en que lo soluciono es agregando la siguiente línea a cada vista parcial:
@{
Layout = "";
}
Parece una forma incorrecta de indicar una vista como parcial en Razor. (Tenga en cuenta que, a diferencia del motor de vista de formularios web, la extensión de archivo es la misma para vistas parciales).
Otras opciones que consideré pero que son aún peores:
- Colocando 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.
¿Esto es algo que todavía está siendo desarrollado por el equipo Razor view engine, o me está faltando un concepto fundamental?
Si return PartialView()
desde sus controladores (en lugar de return View()
), entonces _viewstart.cshtml
no se ejecutará.