ASP.NET MVC - Validando os parâmetros na requisição de uma URL (pt-BR)

ASP.NET MVC - Validando os parâmetros na requisição de uma URL (pt-BR)

Sabemos que em toda requisição para uma Action os parâmetros sempre são enviados juntos através da URL. Não seria ótimo poder validar estes parâmetros para não permitir que informações inválidas ou fora de padrão cheguem as nossas Actions?

Considerando a seguinte URL em MVC http://localhost:9040/Home/ValidandoOsParametros se formos enviar o id como parâmetro ficaria assim http://localhost:9040/Home/ValidandoOsParametros/4 podemos ver que o id é numérico, logo não podemos realizar a seguinte requisição http://localhost:9040/Home/ValidandoOsParametros/abc.  Para tanto o ASP.NET MVC fornece um mecanismo para validação pelo qual podemos validar a URL analisando se os dados são válidos.

Observe a seguinte ação em HomeController:

public class HomeController : Controller
{
   public ActionResult ValidandoOsParametros(int id)
   {
      return View();
   }
}


Até aqui tudo extremamente simples e normal, agora vamos definir a validação na criação da Rota, para tal validação iremos utilizar Regex (Regular Expressions).

Está validação será aplicada utilizando a 4ª sobrecarga da extensão routes.MapRoute, isso claro se você estiver definindo suas Rotas pelo arquivo Global.asax, segue abaixo imagem demonstrativa:

 

Caso você não possua muita familiaridade com Expressões Regulares, aqui tem um ótimo vídeo explicativo (em inglês).

Para realizarmos a validação numérica vamos utilizar a seguinte regex "d{1,2}", isto significa que o parâmetro deve ser numérico e deve possuir no máximo dois dígitos, ou seja, deve ser entre 0 e 99. Defini também que o valor padrão para o parâmetro é 0. Veja abaixo como fica a definição de nossa rota completa:

routes.MapRoute(
  "Default",
  "{controller}/{action}/{id}",
  new { controller = "Home", action = "ValidandoOsParametros", id = 0 },
  new { id = @"d{1,2}" });

 

Agora é só testar, observe que passando o id válido a página carrega normalmente, porém quando passamos parâmetros inválidos é apresentado erro:

 

 

 

O mais interessante é que estas validações são realizadas ANTES da requisição chegar até o Controller. 

Rafael Zaccanini
MTAC – Microsoft Technical Audience Contributor

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

Leave a Comment
  • Please add 6 and 7 and type the answer here:
  • Post
Wiki - Revision Comment List(Revision Comment)
Comments
  • Priscila Mayumi Sato edited Revision 2. Comment: retirei as tags sobre lingua pt, não há mais a necessidade

Page 1 of 1 (1 items)
Wikis - Comment List
Posting comments is temporarily disabled until 10:00am PST on Saturday, December 14th. Thank you for your patience.
Comments
  • Priscila Mayumi Sato edited Revision 2. Comment: retirei as tags sobre lingua pt, não há mais a necessidade

Page 1 of 1 (1 items)