Ich benutze _viewstart.cshtml automatisch das gleiche Razor Layout zuweisen zu meinen Ansichten.
Es ist eine tote einfache Datei im Stamm meines Views-Ordners, die so 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 dar teilweise Sichten, weil sie den Inhalt von _viewstart.cshtml ausführen und sich deshalb fälschlicherweise ein Layout zuweisen, das sie, äh, nicht mehr teilweise macht.
Hier ist ein hypothetisches Projekt, das die Datei _viewstart.cshtml, die freigegebene Datei _layout.shtml und eine Teilansicht ("AnonBar.cshtml") zeigt.
Zurzeit versuche ich, dies zu umgehen, indem ich zu 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 die Dateierweiterung im Gegensatz zur Web Form-Ansichts-Engine für Teilansichten identisch ist.)
Andere Optionen, die ich in Betracht gezogen habe, aber das sind noch schlimmer:
- Alle Teilansichten in einen gemeinsamen Ordner einfügen, sodass sie eine gemeinsame _viewstart.cshtml-Datei teilen können. Dies bricht die Konvention, dass Ansichten sich im selben Ordner wie ihr Controller befinden.
- Keine Teilansichten verwenden.
Wird das vom Razor-View-Engine-Team noch ausgearbeitet, oder fehlt mir ein grundlegendes Konzept?
Antworten:
232 für die Antwort № 1Wenn du return PartialView()
von Ihren Controllern (statt return View()
), dann _viewstart.cshtml
wird nicht ausgeführt.