Recuperar o nome do Controller e o nome da Action em nossa View(Página CSHTML) #Asp.Net MVC.

Autor : Antonio Carlos Ferreira de Azevedo
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.





Comentários