33 votes

Comment gérer les zones MVC et RenderAction dans différents contrôleurs?

J'ai juste ajouté une nouvelle Admin de la zone de mon projet comme sa a commencé à faire très grand et je veux garder structuré.

J'ai un _ViewStart.cshtml point de vue qui définit un partagées mise en page de la page pour inclure un menu et d'une partie avec des informations d'utilisateur. Comme ce n'était pas d'être ajouté sur ma page, j'ai ajouté les _ViewStart fichier à mon égard.

Ce fichier définit la mise en page de "~/Views/Shared/_Layout.cshtml", qui est en dehors de ma zone d'administration. Toutefois, le fichier _Layout comprend un RenderAction() méthode qui appelle un Enfant de la méthode d'action sur le contrôleur pour le rendu. Le problème est que la région ne semblent pas avoir de la visibilité de ce contrôleur et donc jette l'exception suivante:

The controller for path '/Admin/LeadOrigin' was not found or does not implement IController.

Au point où elle s'est produite bien c'est ici:

Line 70:         <div id="logindisplay">
Line 71:             @{
Line 72:                 Html.RenderAction("UserInfo", "Account");              
Line 73:             }
Line 74:         </div>

Le RenderAction() ci-dessus fonctionne normalement ainsi que le Compte contrôleur est dans la portée de la vue, tandis que dans la zone d'Admin, il semble qu'il n'a pas la portée de ce contrôleur.

Des idées comment contourner ce problème?

61voto

Richard Dalton Points 20402

Vous pouvez spécifier la zone dans le cadre de RouteValueDictionary (ou simplement un objet de valeurs de route) que RenderAction prend comme troisième paramètre dans votre cas:

 Html.RenderAction("UserInfo", "Account", new { area = "" });  
 

Cela suppose que le contrôleur de compte se trouve dans la zone racine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X