2013-08-07 2 views
0

У меня есть общий файл _Layout.cshtml, который используется для просмотра в отдельных областях.Доступ к имени области из общего Partial View

_Layout.cshtml имеет @Html.Action призыв к действию на контроллере в «корневой» зоне (не уверен, как ссылаться на ни междугородней область), которая возвращает PartialViewResult.

Мой вопрос: могу ли я получить доступ к названию области, к которой обращаются из частичного действия?

Таким образом, если пользователь обращается к /Users/User/Create, в представлении «Создать» в области «Пользователи» используется общий _Layout.cshtml, который вызывает общее действие контроллера. Мне нужно иметь доступ к «Пользователям» в этом методе.

До сих пор я смотрел в ParentActionViewContext.RouteData, но там отображаются только имена контроллеров и действий (как и следовало ожидать).

ответ

0

На основании our brief Twitter conversation вы говорите, что делаете это, чтобы выделить текущую область в меню/навигационной панели.

Я сделал что-то подобное в прошлом, где я рассматривал меню как частичное представление со своим собственным контроллером и действием. Взяв такой подход, вы сможете показать свою модель (view-) для MenuItem bool для «selected» или «active», а затем использовать специальный HTML-помощник для выписывания соответствующего HTML-кода для активного/неактивного элемента меню.

Не в тему, я знаю, но, возможно, вы, возможно, сделали свои области слишком мелкозернистыми. Например, какие другие контроллеры за пределами UserController содержат область «Пользователи»? Не могли бы вы использовать отдельные контроллеры в области по умолчанию для достижения такого же разделения функциональности?

+0

Я думаю, что вы правы в том, чтобы быть слишком мелким. По крайней мере, на данный момент. Я думаю, что это хороший случай YAGNI. :) – DavidGouge