2011-09-12 26 views
30

que acaba de agregar una nueva área de administración a mi proyecto como su empezaron a llegar a ser muy grande y quiero mantenerlo estructurado.¿Cómo administro áreas MVC y RenderAction en diferentes controladores?

Tengo una vista _ViewStart.cshtml que establece una página de diseño compartido para incluir un menú y un parcial con información del usuario. Como esto no se agregó en mi página de área, también agregué el archivo _ViewStart a mi área.

Este archivo establece el diseño en "~/Views/Shared/_Layout.cshtml", que está fuera de mi área de administración. Sin embargo, el archivo _Layout incluye un método RenderAction() que llama al método de acción Child en el controlador para la representación. El problema es que la zona no parecen tener visibilidad de este controlador y así desencadena la siguiente excepción:

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

el punto en que se produjo sin embargo, es aquí:

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

la RenderAction() arriba funciona normalmente ya que el controlador de cuenta está dentro del alcance de la vista, mientras que en el área de administración, parece que no tiene alcance de este controlador.

¿Alguna idea sobre cómo solucionar este problema?

Respuesta

53

Puede especificar el área como parte de la RouteValueDictionary (o simplemente objeto de los valores de ruta), que RenderAction toma como un tercer parámetro, en su caso:

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

Esto es suponiendo que el controlador cuenta está en la raíz zona.

Cuestiones relacionadas