route net mvc attribute asp addcontrollersasservices asp.net-mvc razor asp.net-mvc-areas

asp.net mvc - net - ¿Cómo administro áreas MVC y RenderAction en diferentes controladores?



net core api route (1)

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

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

Esto supone que el controlador de cuenta está en el área raíz.

Acabo de agregar una nueva área de administración a mi proyecto ya que comenzó a ser bastante grande y quiero mantenerlo estructurado.

Tengo una vista _ViewStart.cshtml que establece una página de diseño compartido para incluir un menú y un parcial con cierta 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 el área no parece tener visibilidad de este controlador y arroja la siguiente excepción:

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

El punto donde ocurrió, sin embargo, está aquí:

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

El RenderAction () anterior 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 de cómo solucionar este problema?