Se puede poner un archivo _ViewStart.cshtml
dentro de la carpeta /Views/Public
que anular la opción por defecto en la carpeta /Views
y especificar el diseño deseado:
@{
Layout = "~/Views/Shared/_PublicLayout.cshtml";
}
Por analogía se podría poner otro archivo _ViewStart.cshtml
dentro de la carpeta /Views/Staff
con :
@{
Layout = "~/Views/Shared/_StaffLayout.cshtml";
}
también puede especificar el diseño se debe usar para devolver una vista interior de una acción del controlador, pero eso es por acción:
return View("Index", "~/Views/Shared/_StaffLayout.cshtml", someViewModel);
Otra posibilidad es un filtro de acción personalizado que anularía el diseño. Como puede ver, hay muchas posibilidades para lograr esto. Depende de usted elegir cuál se ajusta mejor a su escenario.
ACTUALIZACIÓN:
como se solicita en la sección de comentarios que aquí es un ejemplo de un filtro de acción que elegir una página principal:
public class LayoutInjecterAttribute : ActionFilterAttribute
{
private readonly string _masterName;
public LayoutInjecterAttribute(string masterName)
{
_masterName = masterName;
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
var result = filterContext.Result as ViewResult;
if (result != null)
{
result.MasterName = _masterName;
}
}
}
y luego decorar un controlador o una acción con este atributo personalizado que especifica el diseño que desea:
[LayoutInjecter("_PublicLayout")]
public ActionResult Index()
{
return View();
}
Sólo en caso de:. Si desea eliminar el diseño de una vista de 'Razor' determinada, simplemente configure' Layout = null; ' –
Al igual que un comentario en su ejemplo, probablemente no debería tener controladores llamados Public and Staff. Los controladores se implementan más a menudo como el punto de entrada a una acción similar a CRUD en ciertas entidades comerciales clave, como EventController, UserController o similares. Si su aplicación es reas grandemente, la responsabilidad de un controlador público/personal sería amplia. Considere las áreas en su lugar. http://msdn.microsoft.com/en-us/library/ee671793%28VS.100%29.aspx Es posible que tenga conocimiento de esto, pero alguien más leyendo esto podría obtener la idea equivocada, por lo tanto, solo para el registro. – Alex