RSS

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

03 fev

 

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

Anúncios
 
2 Comentários

Publicado por em 03/02/2011 em ASP.NET MVC

 

Tags: , , , ,

2 Respostas para “ASP.NET MVC – Verificando se a Action solicitada existe em uma requição de URL

  1. Pedro Celso

    20/02/2011 at 3:20 pm

    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.

     
    • Rafael Zaccanini

      03/03/2011 at 6:08 pm

      Olá Pedro,

      Mas qual erro realmente ocorre? o mesmo apresentado no artigo? Abs.

       

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

 
%d blogueiros gostam disto: