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(); }}
public
class
HomeController : Controller
{
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}" });
routes.MapRoute(
"Default"
,
"{controller}/{action}/{id}"
new
{ controller =
"Home"
, action =
"ValidandoOsParametros"
, id = 0 },
{ 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
Priscila Mayumi Sato edited Revision 2. Comment: retirei as tags sobre lingua pt, não há mais a necessidade