Sie können eine _ViewStart.cshtml
Datei in den /Views/Public
Ordner einfügen, die die Standarddatei im /Views
Ordner überschreibt und das gewünschte Layout angibt:
@{
Layout = "~/Views/Shared/_PublicLayout.cshtml";
}
Analog könnten Sie eine andere _ViewStart.cshtml
Datei in den /Views/Staff
Ordner 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();
}
Razor
Ansicht entfernen möchten , setzen Sie einfachLayout = null;