Мы целенаправленно не обнаружили способ получить текущее имя области из запроса MVC, так как «a rea "является просто атрибутом маршрута. Это ненадежно для других целей. В частности, если вы хотите, чтобы у ваших контроллеров был некоторый атрибут (подумайте об абстрактном термине, а не в классе System.Attribute), который может использоваться помощником, тогда эти атрибуты должны быть найдены на самих контроллерах, не на области.
В качестве практического примера, если вы хотите, чтобы какая-либо логика (например, фильтр действий) запускалась перед любыми контроллерами в определенной области, вы должны связать фильтр действий с этими контроллерами напрямую. Самый простой способ сделать это - связать некоторый MyAreaBaseController с этим фильтром, а затем каждый контроллер, который вы логически хотите связать с этой областью, чтобы подкласс этого типа. Любое другое использование, такое как глобальный фильтр, который смотрит на RouteData.DataTokens ["area"] для принятия решения, является неподдерживаемым и потенциально опасным.
Если вам действительно нужно получить текущее название области, вы можете использовать RouteData.DataTokens["area"]
, чтобы найти его.
Привет, Леви, это был отличный ответ спасибо. – 2010-12-17 21:53:35
Замечательно, если вы узнаете об этом в команде .NET. Используется ли ваш ответ, если он находится внутри? У меня есть общий вид, который используется в разных областях, и я хотел бы изменить его внешний вид на основе того, где пользователь находится на сайте. Я мог бы использовать частичный вид, но тогда основной вид был бы почти пустым. Помещение чего-то в ViewBag кажется неправильным, потому что это строго логика представления. –