Validando models com DataAnnotations e Attributes no ASP.NET MVC

Nest post vou falar um pouco sobre a utilização de DataAnnotations e Attributes para validação de models em projetos ASP.NET MVC.


Conceitos básicos: Em C# (e também em Visual Basic.NET), um Attribute é uma classe para associação de metadados ou informações declarativas em classes, métodos ou membros. Utilizar um Attribute é normalmente referido como "decorar com o atributo".


O System.ComponentModel.DataAnnotations é um namespace introduzido no .NET 3.5 que nos fornece um conjunto de atributos que podem ser classificados como:


  • ValidationAttributes: Derivam da classe ValidationAttribute e são usados para garantir regras de validação que podem ser aplicadas a classes ou membros.

  • DisplayAttributes: Usados para especificar como os dados de uma classe ou membro são exibidos.

  • Data Modeling Attributes: Usados para especificar a estrutura e o relacionamento entre classes de dados (muito utilizados no Entity Framework Code First).


Neste exemplo, utilizarei atributos do tipo ValidationAttributes e DisplayAttributes


Objetivo: Farei aqui um formulário simples de validação de contatos, decorando o modelo com alguns atributos. Não entrarei em questões sobre arquitetura de projeto, e parto do princípio de que o(a) leitor(a) já esteja familiarizado com a estrutura e funcionamento do ASP.NET MVC.

Ferramentas utilizadas: Utilizei para este exemplo o Visual Studio 2013, o .NET Framework 4.5, e o projeto foi criado no template ASP.NET Web Application / MVC 5, que já traz consigo as referências para o bootstrap.

Let's code!:

Criando o Model

Passo 1: Criação do Model

Este simples modelo define a classe Contato com alguns atributos interessantes em seus membros, sendo eles:

[DisplayName] : Quando nos referirmos ao model através da view, o texto que será exibido na Label é o definido neste atributo, ao invés do nome da propriedade. Isso é muito útil quando o nome da propriedade e do desejado diferem, como no caso do Email (nome da propriedade) e E-mail (nome de exibição).

[Required] : Especifica que o campo obrigatório.

[StringLength] : Especifica a largura mínima e máxima da string aceitos no campo.

[EmailAddress] : Atributo já pronto para a validação de e-mails.

[RegularExpression] : Atributo que valida se o valor da propriedade satisfaz a uma expressão regular definida. No caso, utilizei para validar um campo que aceita apenas números.

[Remote] : Não é um DataAnnotation, mas sim um atributo específico do ASP.NET MVC. Basta especificar o nome da Action, seguida pelo controller, e ele fará uma requisição AJAX enquanto você preenche o campo, passando o valor digitado como argumento da action fornecida. Utilizei para validar se o endereço digitado já existe.

Criando o Controller


Passo 2: Criando o Controller

O controller contém uma action chamada "ConsultaEmailsCadastrados", que graças ao atributo [Remote] citado anteriormente, é acessado sempre que você digitar algum valor no campo Email. No exemplo, se o e-mail digitado já existir na lista, o método retornará uma resposta inválida e a mensagem de erro especificada será exibida.

Ao postar o formulário para a action “CadastrarContato”, devido ao fato da view estar ligada ao model Contato e seus membros, um objeto do tipo “Contato” será passado como parâmetro. Nesta action verifico o valor booleano da propriedade IsValid do dicionário ModelState, que também pode nos fornecer uma lista de erros ocorridos na validação.


Criando a View


Passo 3: Criando a View

Utilizando o Razor View Engine do ASP.NET MVC e suas funções definidas, crio a GUI de forma que os campos da tela se associem ao model através dos Lambda Expressions. As labels geradas pelo @Html.LabelFor irão exibir exatamente o valor definido no atributo  [DisplayName], enquanto o @Html.ValidationMessageFor irá exibir as mensagens de erro definidas nos atributos de validação sempre que o input for inválido.


Dica: Você pode usar um @Html.ValidationSummary para exibir todos os erros de validação de uma vez só.


Rodando a aplicação:


Rodando a aplicação


Aqui podemos visualizar a validação ocorrendo no lado do cliente, que não permite que o post chegue ao servidor enquanto as regras não forem satisfeitas. Caso você desabilite o Javascript do navegador, a mesma validação ocorrerá somente no server.


Detalhes essenciais: Para que a validação no lado do cliente funcione como na imagem, é necessário adicionar 3 bibliotecas Javascript, sendo elas:

 


Scripts necessários


 

Vale lembrar que mesmo adicionando-as, você precisará ter a chave “UnobtrusiveJavaScriptEnabled” habilitada no web.config da aplicação:

 


Chave no Web.config


 

Conclusão: Com a utilização dos DataAnnotations e Attributes, podemos facilmente validar nossas aplicações, poupando retrabalho e garantindo a segurança dos dados de maneira prática e centralizada.

Código Fonte deste exemplo


 

Visite também:

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataa... 

Aprofunde seus conhecimentos sobre o tema visitando a comunidade AS...

 

Exibições: 3244

Comentar

Você precisa ser um membro de DevBrasil para adicionar comentários!

Entrar em DevBrasil

Comentário de Henrique Clausing Cunha em 20 março 2014 às 16:52

DataAnnotations é show de bola!

Uso sem moderação!

© 2017   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço