vistas vista una pasar pagina mvc multiples modelos modelo misma controlador asp.net-mvc razor

asp.net mvc - una - ASP MVC 3 usa diferentes diseños en diferentes vistas



razor c# (3)

Este método es la forma más sencilla para que los principiantes controlen la representación del diseño en su aplicación ASP.NET MVC. Podemos identificar el controlador y renderizar los diseños según el controlador. Para hacer esto, escribimos nuestro código en el archivo _ViewStart en el directorio raíz de la carpeta Vistas. El siguiente es un ejemplo de cómo se puede hacer.

@{ var controller = HttpContext.Current.Request.RequestContext.RouteData.Values["Controller"].ToString(); string cLayout = "~/Views/Shared/_Layout.cshtml"; if (controller == "Webmaster") { cLayout = "~/Views/Shared/_WebmasterLayout.cshtml"; } Layout = cLayout; }

Lea el artículo completo que escribí here : "Cómo renderizar diferentes diseños en ASP.NET MVC".

Tengo una aplicación ASP MVC que necesita múltiples diseños diferentes. En ASP.NET Web Apps, habría creado páginas maestras separadas. ¿Cómo hago esto en ASP MVC 3?

Hasta ahora he creado un archivo Layout.cshtml por separado para cada diseño que necesito.

Intenté configurar el diseño en la vista, pero se está desviando del ViewStart.cshtml que lo está configurando de nuevo en el diseño predeterminado para el sitio.

Además, parece que no puedo hacer que intellisense trabaje con Razor, así que no he podido explorar mucho de lo que puedo hacer en ViewStart, si puedo configurar el diseño de manera condicional, o qué.

¿Pensamientos?


Puede establecer el diseño dinámicamente en su acción de controlador:

public ActionResult Index() { var viewModel = ... return View("Index", "_SomeSpecialLayout", viewModel); }


Puede establecer manualmente el diseño de una vista escribiendo @{ Layout = "~/.../Something.cshtml"; } @{ Layout = "~/.../Something.cshtml"; } en la parte superior.

EDITAR : Puede pasar el nombre del diseño como un parámetro al método View() en el controlador.