J'utilise _ viewstart.cshtml pour attribuer automatiquement la même mise en page Razor à mes vues.
C'est un fichier simple mort à la racine de mon dossier Views qui ressemble à ceci:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
C’est plus DRY que d’ajouter la directive @Layout à chaque vue.
Cependant, cela pose un problème pour les vues Razor partial, car elles exécutent le contenu de _viewstart.cshtml et s’assignent donc incorrectement une mise en page, ce qui les rend, euh, non plus partielles.
Voici un projet hypothétique montrant le fichier _viewstart.cshtml, le fichier partagé _layout.shtml et une vue partielle ("AnonBar.cshtml").
Actuellement, la solution consiste à ajouter la ligne suivante à chaque vue partielle:
@{
Layout = "";
}
Cela semble être le mauvais moyen de désigner une vue comme partielle dans Razor. (Notez que contrairement au moteur d'affichage des formulaires Web, l'extension de fichier est la même pour les vues partielles.)
J'ai envisagé d'autres options, mais elles sont encore pires:
Est-ce quelque chose que l'équipe du moteur de visualisation Razor est en train d'étoffer ou est-ce qu'il me manque un concept fondamental?
Si vous return PartialView()
à partir de vos contrôleurs (au lieu de return View()
), alors _viewstart.cshtml
ne sera pas exécuté.