Je voudrais avoir 2 mises en page distinctes dans ma candidature. Disons que l'un est destiné à la section publique du site Web et l'autre à la partie réservée aux membres.
Pour plus de simplicité, disons que toute la logique de chacun de ces sites est soigneusement emballée dans 2 contrôleurs distincts.
- PublicController
- StaffController
Et qu'ils ont chacun une disposition correspondante pour toutes les vues sous chacun.
- _PublicLayout.cshtml
- _StaffLayout.cshtml
Comment utiliser le fichier _ViewStart.cshtml pour spécifier que tous les View / Action sous "Public" utilisent le PublicLayout et tout sous "Staff" utilisent le StaffLayout?
Merci!
asp.net-mvc
layout
asp.net-mvc-3
razor
Justin
la source
la source
Razor
vue donnée , définissez simplementLayout = null;
Réponses:
Vous pouvez mettre un
_ViewStart.cshtml
fichier dans le/Views/Public
dossier qui remplacerait celui par défaut dans le/Views
dossier et spécifier la mise en page souhaitée:Par analogie, vous pouvez mettre un autre
_ViewStart.cshtml
fichier dans le/Views/Staff
dossier avec:Vous pouvez également spécifier la disposition à utiliser lors du retour d'une vue à l'intérieur d'une action de contrôleur, mais c'est par action:
Encore une autre possibilité est un filtre d'action personnalisé qui remplacerait la disposition. Comme vous pouvez voir de nombreuses possibilités pour y parvenir. A vous de choisir celui qui correspond le mieux à votre scénario.
METTRE À JOUR:
Comme demandé dans la section des commentaires, voici un exemple de filtre d'action qui choisirait une page maître:
puis décorez un contrôleur ou une action avec cet attribut personnalisé en spécifiant la disposition souhaitée:
la source
LayoutInjecterAttribute
. ? Y a-t-il un endroit particulier?ActionFilters
sous-dossier.LayoutInjecterAttribute
: Il est appelé avant laOnException
méthode du contrôleur . Ainsi, si le contrôleur fournit un résultat d'affichage lors de la gestion des exceptions, la disposition ne sera pas définie.OnActionExecuted
. Pouvez-vous s'il vous plaît mettre à jour la réponse pour moi.Une autre méthode consiste à définir la disposition à l'intérieur de la vue:
Plus de façons de faire, peuvent être trouvées ici , j'espère que cela aide quelqu'un.
la source
Cette méthode est le moyen le plus simple pour les débutants de contrôler le rendu des mises en page dans votre application ASP.NET MVC. Nous pouvons identifier le contrôleur et rendre les mises en page en tant que contrôleur par, pour ce faire, nous pouvons écrire notre code dans le fichier _ViewStart dans le répertoire racine du dossier Views. Voici un exemple qui montre comment cela peut être fait.
Lire l'article complet ici "Comment rendre une disposition différente dans ASP.NET MVC"
la source