Как я могу узнать название действия контроллера, которое вызвало мое представление в MVC3? - PullRequest
8 голосов
/ 16 мая 2011

Я хотел бы закодировать некоторую логику в моих представлениях, которая зависит от имени действия контроллера, используемого для вызова представления. Есть ли способ узнать это имя?

Надеюсь, кто-нибудь может мне помочь с этим. Обратите внимание, что я использую MVC3.

Ответы [ 3 ]

13 голосов
/ 16 мая 2011

Получить имя контроллера

@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue

Получить имя действия

@ViewContext.Controller.ValueProvider.GetValue("action").RawValue

Я обнаружил, что здесь .

5 голосов
/ 16 мая 2011
@ViewContext.RouteData.Values["Controller"]
@ViewContext.RouteData.Values["Action"]

Хотя это работает, я бы предположил, что это немного не элегантно.Лично я добавил бы эти параметры в качестве флагов в ViewModel и передал бы это моему View.

3 голосов
/ 16 мая 2011

ViewContext.RouteData.Values["action"] может использоваться, но это плохой выбор, чтобы позволить представлению решать такие вещи. Вы можете использовать шаблоны отображения и редактирования для создания различных представлений, а затем позволить действию выбирать свое представление. Представления должны быть очень простыми и основываться на данных, полученных через ViewData или их модель. Лучше всего позволить контролеру решать такие вещи, как дифференцирование некоторых представлений с действием

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...