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

Rafael Zaccanini
MTAC – Microsoft Technical Audience Contributor

Blog: http://www.rafaelzaccanini.net
Twitter: 
@rafaelzaccanini
Facebook: http://www.facebook.com/RafaelZaccaniniNet