Você quer validar os Models da sua aplicação com o menor esforço possível respeitando os bons princípios de OOP? Se a resposta for sim utilize DataAnnotations!
No ASP.NET MVC 2 RC você pode utilizar os recursos de DataAnnotations para validar os Models da sua aplicação no Server e com 3 linhas de código a mais você consegue a mesma validação no Client. Vamos ver como isso funciona.
Para validar os Models da sua aplicação você precisa apenas "decorar" as propriedades com o(s) atributo(s) apropriado(s), todos os atributos estão no namespace System.ComponentModel.DataAnnotations , veja abaixo uma lista com os atributos mais utilizados.
Required – Especifica que o valor da propriedade é necessário.
StringLength - Especifica o tamanho máximo de caracteres permitidos.
RegularExpression - Especifica que o valor da propriedade deve corresponder à expressão regular.
Range - Especifica um intervalo numérico para o valor da propriedade.
Em uma aplicação comum esses são os atributos que você com certeza ira utilizar, você ainda pode estender a funcionalidade de um atributo para atender as suas necessidades ou criar um a partir da classe base ValidationAttribute, mais isso é assunto para outro post.
Para montar esse exemplo utilizei o ASP.NET MVC 2 RC com Visual Studio 2008, vamos iniciar pelo Model da aplicação veja o código abaixo.
public class Cliente
{
[StringLength(50, ErrorMessage = "Digite um nome com até 50 caracteres.")]
[Required(ErrorMessage = "O campo nome é obrigatório.")]
public string Nome { get; set; }
[Required(ErrorMessage = "O campo email é obrigatório.")]
[RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "Email inválido.")]
public string Email { get; set; }
[Required(ErrorMessage = "O campo idade é obrigatório.")]
[Range(0, 100, ErrorMessage = "Entre com um valor de 0 a 120.")]
public int Idade { get; set; }
[Required(ErrorMessage = "O campo endereço é obrigatório.")]
public string Endereco { get; set; }
}
Com o Model pronto vamos ver se as validações estão realmente funcionando, crie um Controller conforme código abaixo.
public class ClienteController : Controller
{
public ActionResult Index()
{
return RedirectToAction("Create");
}
public ActionResult Create()
{
return View(new Cliente());
}
[HttpPost]
public ActionResult Create(Cliente cliente)
{
if (ModelState.IsValid)
{
//Persiste o model
return Content("Model valido!");
}
return View();
}
}
Note que a action Create recebe como parâmetro o nosso Model e verifica se o ModelState é valido.
Por fim vamos montar a view Create , para isso clique com o direito dentro da action Create e selecione a opção Add View , veja as configurações na imagem abaixo.
Imagem 1 - Configurações da View
Agora você pode executar a aplicação e digitar http://localhost:xxxx/cliente , veja o resultado esperado na imagem abaixo.
Imagem 2 - Resultado esperado
Agora para finalizar só esta faltando as validações no Client (validações JavaScript), para adicionar esse recurso você precisa de mais 3 linhas de código na View Create adicione os arquivos JavaScript MicrosoftAjax.js e MicrosoftMvcValidation.js , para habilitar as validações utilize o helper Html.EnableClientValidation(), Veja o trecho de código alterado na imagem abaixo.
Imagem 3 - Habilitando validações no client
Agora teste novamente e note que você possui validações no client também, simplesmente sensacional! No próximo post vamos criar um validador customizado.
Código fonte em C# ou VB.NET
Daniel Fonseca Castro