Ich verwende _viewstart.cshtml , um meinen Ansichten automatisch dasselbe Rasiermesser-Layout zuzuweisen .
Es ist eine absolut einfache Datei im Stammverzeichnis meines Views-Ordners, die folgendermaßen aussieht:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Dies ist trockener als das Hinzufügen der @ Layout-Direktive zu jeder einzelnen Ansicht.
Dies stellt jedoch ein Problem für Razor- Teilansichten dar , da sie den Inhalt von _viewstart.cshtml ausführen und sich daher fälschlicherweise ein Layout zuweisen, wodurch sie nicht mehr teilweise sind.
Hier ist ein hypothetisches Projekt, das die Datei _viewstart.cshtml, die freigegebene Datei _layout.shtml und eine Teilansicht ("AnonBar.cshtml") zeigt.
Derzeit kann ich dies umgehen, indem ich jeder Teilansicht die folgende Zeile hinzufüge:
@{
Layout = "";
}
Dies scheint der falsche Weg zu sein, um eine Ansicht als Teil in Razor zu bezeichnen. (Beachten Sie, dass im Gegensatz zur Web Forms View Engine die Dateierweiterung für Teilansichten identisch ist.)
Andere Optionen habe ich in Betracht gezogen, aber das ist noch schlimmer:
- Platzieren aller Teilansichten in einem gemeinsamen Ordner, damit sie eine gemeinsame _viewstart.cshtml gemeinsam nutzen können. Dies verstößt gegen die Konvention, dass sich Ansichten im selben Ordner wie ihr Controller befinden.
- Keine Teilansichten verwenden.
Wird dies noch vom Razor View Engine-Team ausgearbeitet, oder fehlt mir ein grundlegendes Konzept?