Sie können eine _ViewStart.cshtmlDatei in den /Views/PublicOrdner einfügen, die die Standarddatei im /ViewsOrdner überschreibt und das gewünschte Layout angibt:
@{
Layout = "~/Views/Shared/_PublicLayout.cshtml";
}
Analog könnten Sie eine andere _ViewStart.cshtmlDatei in den /Views/StaffOrdner legen mit:
@{
Layout = "~/Views/Shared/_StaffLayout.cshtml";
}
Sie können auch angeben, welches Layout verwendet werden soll, wenn eine Ansicht innerhalb einer Controller-Aktion zurückgegeben wird. Dies gilt jedoch pro Aktion:
return View("Index", "~/Views/Shared/_StaffLayout.cshtml", someViewModel);
Eine weitere Möglichkeit ist ein benutzerdefinierter Aktionsfilter, der das Layout überschreibt. Wie Sie sehen, gibt es viele Möglichkeiten, dies zu erreichen. Sie können selbst entscheiden, welches am besten zu Ihrem Szenario passt.
AKTUALISIEREN:
Wie im Kommentarbereich angefordert, ist hier ein Beispiel für einen Aktionsfilter, der eine Masterseite auswählen würde:
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;
}
}
}
und dekorieren Sie dann einen Controller oder eine Aktion mit diesem benutzerdefinierten Attribut, das das gewünschte Layout angibt:
[LayoutInjecter("_PublicLayout")]
public ActionResult Index()
{
return View();
}
RazorAnsicht entfernen möchten , setzen Sie einfachLayout = null;