2011-04-06 7 views
3

J'ai créé un projet asp mvc3, je veux avoir un _Layout.cshtml différent en fonction du contrôleur sélectionné. C'est parce qu'avec le contrôleur 1 il a 2 boutons avec le controller2 il y aura 3 et avec le controller3 il y aura 4. Chaque contrôleur est pour un type spécifique d'utilisateur, ainsi cela dépend de la connexion.Spécifier un _Layout.cshtml différent en fonction du contrôleur

Comment puis-je lier un contrôleur et ses vues à un autre Layout.cshtml, en ce moment il y a une mise en page et il est sous le dossier partagé.

Merci!

Répondre

11

La vue doit déterminer la disposition, pas le contrôleur.

Le contrôleur doit simplement déterminer quelle vue est retournée. Puis, en haut de votre vue, vous pouvez spécifier la mise en page. Vous pouvez ajouter une déclaration Si autour de lui pour le modifier en fonction de vos données

@{ 
    if(ViewBag.someValue) 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    else 
     Layout = "~/Views/Shared/_otherLayout.cshtml"; 
} 
+0

+1 pour une solution simple et efficace. – Saxman

1

A ce stade, étant donné que l'autre est un peu daté et avec mvc 5, je sais que vous aurez des problèmes avec ne pas avoir crochets . Si vous souhaitez utiliser la logique View to be, voici une réponse plus complète.

Contrôleur

public ActionResult Index() 
{ 
    ViewBag.Admin = 1; 
    return View(); 
} 

Voir

@{ 

    if (ViewBag.Admin == 1) 
    { 
     Layout = "~/Views/Shared/_AdminLayout.cshtml"; 
    } 
    else 
    { 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 

} 
Questions connexes