Как получить текущее имя области в представлении или контроллере?
Есть ли что-нибудь подобное ViewContext.RouteData.Values["controller"]
для областей?
c#
asp.net-mvc
razor
user202448
источник
источник
ASP.NET Core 1.0
вместоMVC6
.. :-)источник
Вы можете получить его с контроллера, используя:
источник
В ASP.NET Core 1.0 значение находится в
ViewContext.RouteData.Values [ "область"];
источник
pageModel.RouteData.Values.TryGetValue("area", out object area)
следует использовать вместо этого)Я только что написал об этом в журнале , вы можете посетить это для получения более подробной информации, но мой ответ заключался в создании метода расширения, показанного ниже.
Ключевым моментом было то, что вы извлекаете область MVC из .DataTokens и контроллер / действие из .Values RouteData.
Затем вы можете реализовать это, как показано ниже:
источник
area
токен в,Values
но мне нужно было посмотреть вDataTokens
... не знаю почему.Я создал метод расширения,
RouteData
который возвращает текущее имя области.Поскольку
RouteData
доступен на обоих,ControllerContext
и кViewContext
нему можно получить доступ в вашем контроллере и представлениях.Также очень легко протестировать:
Нет необходимости проверять,
RouteData.DataTokens
является ли значение null, поскольку оно всегда инициализируется внутренне.источник
MVC Futures имеет метод AreaHelpers.GetAreaName (). Однако будьте осторожны, если используете этот метод. Использование текущей области для принятия решений во время выполнения для вашего приложения может привести к трудному отладке или небезопасному коду.
источник
this.GetName()
и для текущего использования методаMethodBase.GetCurrentMethod().Name
Я знаю, что это старый, но также, когда в фильтре, таком как ActionFilter, контекст не легко предоставляет вам информацию об области.
Его можно найти в следующем коде:
Таким образом, filterContext передается при переопределении, а правильные RouteData находятся в RequestContext. На базовом уровне есть RoutData, но у DataTokens НЕТ области в словаре.
источник
Чтобы получить имя области в представлении, в ASP.NET Core MVC 2.1:
источник
Получить имя области в представлении (.NET Core 2.2):
источник
Я знаю, что это очень старый пост, но мы можем использовать свойство Values точно так же, как DataTokens.
Url.RequestContext.RouteData.Values ["действие"] работал у меня.
источник
Я не знаю почему, но принятый ответ не работает. Он возвращает null, например, (возможно, о mvc, я использую ядро .net)
Я всегда отлаживаю переменную и беру данные из нее.
Попробуй это. Меня устраивает
Подробный логический пример
источник