Como você obtém o nome da área atual na visualização ou no controlador?
Existe algo parecido ViewContext.RouteData.Values["controller"]
com áreas?
c#
asp.net-mvc
razor
user202448
fonte
fonte
ASP.NET Core 1.0
em vez deMVC6
.. :-)fonte
Você pode obtê-lo do controlador usando:
fonte
No ASP.NET Core 1.0, o valor é encontrado em
ViewContext.RouteData.Values ["area"];
fonte
pageModel.RouteData.Values.TryGetValue("area", out object area)
deve ser usado em vez)Acabei de escrever uma entrada de log sobre isso , você pode visitar isso para obter mais detalhes, mas minha resposta foi criar um método de extensão, mostrado abaixo.
O ponto principal foi que você extraiu a Área MVC do .DataTokens e o controlador / ação dos .Values do RouteData.
Então você pode implementá-lo como abaixo:
fonte
area
token no,Values
mas precisava procurar noDataTokens
... não faço ideia do porquê.Eu criei um método de extensão para
RouteData
que retorne o nome da área atual.Uma vez que
RouteData
está disponível em ambosControllerContext
eViewContext
pode ser acessado em seu controlador e visualizações.Também é muito fácil testar:
Não há necessidade de verificar se
RouteData.DataTokens
é nulo, pois isso sempre é inicializado internamente.fonte
O MVC Futures possui um método AreaHelpers.GetAreaName (). No entanto, tenha cuidado se você estiver usando esse método. Usar a área atual para tomar decisões de tempo de execução sobre seu aplicativo pode levar a códigos difíceis de depurar ou inseguros.
fonte
this.GetName()
e para o atual uso MétodoMethodBase.GetCurrentMethod().Name
Sei que isso é antigo, mas também, quando em um filtro como o ActionFilter, o contexto não fornece facilmente as informações da área.
Pode ser encontrado no seguinte código:
Portanto, o filterContext está sendo transmitido na substituição e o RouteData correto é encontrado no RequestContext. Há um RoutData no nível Base, mas os DataTokens NÃO possuem a área em seu dicionário.
fonte
Para obter o nome da área na exibição, no ASP.NET Core MVC 2.1:
fonte
Obtenha o nome da área no modo de exibição (.NET Core 2.2):
fonte
Eu sei que esta é uma postagem muito antiga, mas podemos usar a propriedade Values exatamente da mesma maneira que os DataTokens
Url.RequestContext.RouteData.Values ["action"] funcionou para mim.
fonte
Não sei por que, mas a resposta aceita não está funcionando. Ele retorna nulo com, por exemplo (talvez sobre mvc, eu uso .net core)
Eu sempre depuro a variável e busco dados nela.
Tente isso. Funciona para mim
Exemplo lógico detalhado
fonte