Подтвердить что ты не робот

Как управлять областями MVC и RenderAction в разных контроллерах?

Я только что добавил новую область Admin в мой проект, так как ее начало становиться довольно большим, и я хочу сохранить его структурированным.

У меня есть представление _ViewStart.cshtml, которое устанавливает общую страницу макета для включения меню и частичной части с некоторой информацией пользователя. Поскольку это не было добавлено на моей странице области, я добавил файл _ViewStart в свою область.

Этот файл устанавливает макет в "~/Views/Shared/_Layout.cshtml", который находится за пределами моей области администрирования. Однако файл _Layout содержит метод RenderAction(), который вызывает метод Child action для контроллера для рендеринга. Проблема заключается в том, что область, похоже, не обладает видимостью этого контроллера и поэтому исключает следующее:

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

То место, где оно произошло, находится здесь:

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

RenderAction() выше работает нормально, поскольку контроллер учетной записи находится в пределах области просмотра, тогда как в области администратора кажется, что у нее нет области действия этого контроллера.

Любые идеи, как обойти эту проблему?

4b9b3361

Ответ 1

Вы можете указать область как часть RouteValueDictionary (или просто объект значений маршрута), который RenderAction принимает в качестве третьего параметра в вашем случае:

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

Предполагается, что контроллер учетной записи находится в корневой области.

Ответ 2

Вы можете использовать @Html.Action для частичного отображения, передавая значения параметров, если это необходимо.

@Html.Action("ActionName", "ControolerName", new { firstParam = "a", SecondParam = "b",.... })