Me gustaría tener 2 diseños separados en mi aplicación. Digamos que uno es para la sección Pública del sitio web y el otro es para el miembro.
Por simplicidad, digamos que toda la lógica de cada uno de estos sitios está perfectamente integrada en 2 controladores distintos.
- PublicController
- StaffController
Y que cada uno tiene un diseño correspondiente para toda la vista debajo de cada uno.
- _PublicLayout.cshtml
- _StaffLayout.cshtml
¿Cómo uso el archivo _ViewStart.cshtml para especificar que todas las vistas / acciones en "Público" usan PublicLayout y todo en "Personal" usa StaffLayout?
¡Gracias!
asp.net-mvc
layout
asp.net-mvc-3
razor
Justin
fuente
fuente
Razor
vista determinada , simplemente configureLayout = null;
Respuestas:
Podría poner un
_ViewStart.cshtml
archivo dentro de la/Views/Public
carpeta que anularía el predeterminado en la/Views
carpeta y especificar el diseño deseado:Por analogía, podría poner otro
_ViewStart.cshtml
archivo dentro de la/Views/Staff
carpeta con:También puede especificar qué diseño se debe usar al devolver una vista dentro de una acción del controlador, pero eso es por acción:
Otra posibilidad es un filtro de acción personalizado que anularía el diseño. Como puede ver muchas posibilidades para lograr esto. Depende de usted elegir cuál se adapta mejor a su situación.
ACTUALIZAR:
Como se solicitó en la sección de comentarios, aquí hay un ejemplo de un filtro de acción que elegiría una página maestra:
y luego decorar un controlador o una acción con este atributo personalizado que especifica el diseño que desea:
fuente
LayoutInjecterAttribute
. ? ¿Hay alguna ubicación en particular?ActionFilters
subcarpeta.LayoutInjecterAttribute
: Se llama antes delOnException
método del controlador . Entonces, si el controlador proporciona un resultado de vista durante el manejo de excepciones, el diseño no se establecerá.OnActionExecuted
. ¿Puedes actualizar la respuesta por mí?Un método más es definir el diseño dentro de la vista:
Puede encontrar más formas de hacerlo aquí , espero que esto ayude a alguien.
fuente
Este método es la forma más sencilla para que los principiantes controlen el renderizado de Layouts en su aplicación ASP.NET MVC. Podemos identificar el controlador y representar los diseños como controlador par, para hacer esto podemos escribir nuestro código en el archivo _ViewStart en el directorio raíz de la carpeta Vistas. El siguiente es un ejemplo que muestra cómo se puede hacer.
Lea el artículo completo aquí "Cómo renderizar diferentes diseños en ASP.NET MVC"
fuente