J'utilise _viewstart.cshtml pour attribuer automatiquement la même disposition de rasoir à 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 partielles de Razor , car elles exécutent le contenu de _viewstart.cshtml et s'attribuent donc incorrectement une mise en page, ce qui les rend, euh, non partielles.
Voici un projet hypothétique, montrant le fichier _viewstart.cshtml, le fichier _layout.shtml partagé et une vue partielle ("AnonBar.cshtml").
Actuellement, la façon dont je contourne ce problème consiste à ajouter la ligne suivante à chaque vue partielle:
@{
Layout = "";
}
Cela semble être la mauvaise façon 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.)
D'autres options que j'ai envisagées mais qui sont encore pires:
- Mettre toutes les vues partielles dans un dossier commun, afin qu'elles puissent partager un _viewstart.cshtml commun. Cela rompt la convention des vues étant dans le même dossier que leur contrôleur.
- Ne pas utiliser de vues partielles.
Est-ce quelque chose qui est encore en cours d'élaboration par l'équipe Razor View Engine, ou est-ce que je manque un concept fondamental?