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?
fuente

Respuestas:
Si usted
return PartialView()desde sus controladores (en lugar dereturn View()),_viewstart.cshtmlno se ejecutará.fuente
PartialViewResultclase. Eso era lo que necesitaba.PartialViewResulten lugar de la habitualActionResult.ActionResult? Me sorprende que esto sea un problema porque el tiempo de ejecución MVC no debería comportarse de manera diferente en este caso (es decir, siempre y cuando el tipo devuelto por el método de acción seaActionResulto cualquier clase derivada de él, las cosas deberían funcionar).ActionResult. Funciona bien si el tipo de retorno esPartialViewResult. ¿Crees que necesito presentar un error de conexión?