Recuperar o nome do Controller e o nome da Action em nossa View(Página CSHTML) #Asp.Net MVC.
Postado em : 12/08/2021
Recuperar o nome de nosso Controller e nossa Action em nossa View.
Por varias vezes nos deparamos com a necessidade de recuperar o nome de nosso Controller e/ou Action quando estamos em nossa visualização, as vezes temos que mostrar situações diferentes ou suprimir algo dependendo da View que esta chamando esta visualização.
Imagine que tem uma PartialView()
sendo chamada de seu layout.cshtml
, por exemplo um menu e que quando a chamada View de um determinado Controller e Action mostre um item a mais, vamos lá.
No exemplo hipotético abaixo, quando nosso Controller for igual a ADMINISTRATIVO
e nossa Action for igual a ExcluirUsuario
o item de menu Excluir Usuários
será exibido, caso contrario não será exibido, sei que este nosso exemplo não e muito pratico mas fui uma maneira didática encontrada para demostrar o uso das funções.
Este seria o código de nosso menu
@{ // Recuperamos nome do nossso Controller var controllerName = this.ViewContext.RouteData.Values["controller"].ToString(); // Recuperamos nome de nossa Action var actionName = this.ViewContext.RouteData.Values["action"].ToString(); } <div class="row"> <div class="col-md-6 col-md-offset-3"> <h1>Menu</h1> </div> </div> <div class="row"> <div class="col-md-6 col-md-offset-3"> <ul> <li><a href="@Url.Action("ConsultaUsuarios","Home")"><i class="fas fa-users"></i><span class="sf-texto">Consulta Usuários</span></a></li> <li><a href="@Url.Action("AlteraUsuarios","Home")"><i class="fas fa-users"></i><span class="sf-texto">Altera Usuários</span></a></li> @if (controllerName.ToUpper() == "ADMINISTRATIVO" && actionName.ToUpper() == "ExcluirUsuario") { <li><a href="@Url.Action("ExcluirUsuarios","Home")"><i class="fas fa-users"></i><span class="sf-texto">Excluir Usuários</span></a></li> } </ul> </div> </div>
Claro que neste método estamos simplesmente ocultando nossa Action no menu, qualquer usuário que saiba o caminho pode acessar digitando o caminho completo, portanto você não pode esquecer de adicionar sua camada de segurança em sua Action onde caso o usuário não esteja autorizado seja desviado para outra pagina utilizando o RedirectToAction(ActionName, controllerName)
.
Não deixe de comentar, é muito importante para continuarmos nosso trabalho.
Links Relacionados
- ActionVerbs lidando com diferentes tipos de solicitações Http em Asp.Net MVC.
- Configurar tempo de uma sessão em Asp.Net MVC
- Consulta SQLServer com paginação
- Disparando uma requisição JQuery Ajax que fornece como retorno conteúdo HTML gerado pela url acessado C#(CSHarp) ASP.NET MVC.
- Padrão MVC
- Passar parâmetros jquery para Url.Action ASP.NET MVC