ASP.NET MVC – Verificando se a Action solicitada existe em uma requisição de URL

Standard

Por diversas vezes, os usuário de nossas aplicações web podem realizar uma requisição onde a “Action” definida na Url não existe dentro do “Controller” especificado. Como no seguinte exemplo, onde é realizada uma requisição do tipo http://localhost:2077/Home/Contato sendo que no “Controller” Home não existe uma “Action” com o nome de Contato.

Isto ocasionará o seguinte erro, conforme demonstrado na Figura 1:


Figura 1

Isto não é muito legal, pois o usuário não vai entender nada do que aconteceu e não fica algo agradável de exibir em tela. Na verdade ficaria muito mais agradável e profissional se, antes de ocorrer o erro, nós verificarmos se a realmente a “Action” existe.

Para tanto, vamos criar um novo “Controller” com o nome de “SuperController”, e dentro do mesmo vamos possuir apenas um método, chamado HandleUnknownAction que recebe um parâmetro do tipo string chamado actionName. Como é demonstrado na imagem abaixo:


Figura 2

Este método é chamado automaticamente no momento que não é encontrada a “Action” solicitada. Note que é realizado um redirecionamento para /Home/PaginaNaoExiste, porém, para que funcione é necessário que o “Controller” que será verificado implemente o “SuperController”:

Figura 3

Agora basta criarmos a “View” “PaginaNaoExiste.aspx” com o conteúdo que desejar, avisando o usuário que a página solicitada não existe.

Note agora o que acontece se realizarmos a mesma requisição http://localhost:2077/Home/Contato:

Figura 4

2 thoughts on “ASP.NET MVC – Verificando se a Action solicitada existe em uma requisição de URL

  1. Pedro Celso

    Caro Rafael sou iniciante no ASP.NET, estou usando o Visual Studio 2010 Express e está acontecendo isto comigo no meu projeto de teste mas não sei como consertar até o momento. Já tentei de tudo.

Leave a Reply

Your email address will not be published. Required fields are marked *