/ / Richtiger Weg, _viewstart.cshtml und partielle Razor Ansichten zu verwenden? - Rasierer, asp.net-mvc-3

Richtiger Weg, _viewstart.cshtml und partielle Razor Ansichten zu verwenden? - Rasierer, asp.net-mvc-3

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.

Beispielprojektstruktur

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 № 1

Wenn du return PartialView() von Ihren Controllern (statt return View()), dann _viewstart.cshtml wird nicht ausgeführt.