Data Annotation em C# (CSharp)
Postado em : 06/04/2016
Data Annotation
A validação dos dados é uma tarefa essencial em qualquer aplicação e validar seus dados pode se tornar um processo trabalhoso dependendo do tipo de aplicação, com a versão 4.0 da plataforma .NET temos a disposição os Data Annotation
, vamos ver um pouco sobre esta ferramenta para utilizarmos em nossas Classe
.
Vamos abordar os mais utilizados
Propriedade | Descrição |
---|---|
Key | Define a chave primaria |
Required | Significa campo obrigatório, se não for informado será mostrada a mensagem definida em ErrorMessage . |
MinLength | Tamanho mínimo do campo. Caso a regra seja violada, será exibida a mensagem no ErrorMessage . |
StringLength | Tamanho máximo do campo. Caso a regra seja violada, será exibida a mensagem no ErrorMessage . |
Display | Nome a ser mostrado em todas as interfaces de usuário. |
DisplayFormat | Formato a ser exibido na interfaces de usuário. |
Range | Define a faixa de dados aceita pela propriedade. Caso esteja fora da faixa é mostrado a mensagem definida em ErrorMessage . |
RegularExpression | Valida por expressão regular. Se não for valida é mostrado a mensagem definida em ErrorMessage . |
Remote | Faz uma validação remota no servidor utilizando JSon . Se não for valida é mostrado a mensagem definida em ErrorMessage . você também pode definir campos adicionais em AdditionalFields colocando seus atributos separados por virgula, mas atenção os nomes dos atributos dever ser escritos da mesma maneira que foram escritos em seu modelo. |
Compare | Valida com base em outro atributo, utilizada para validar se duas senhas são iguais. Se os valores não forem iguais é mostrado a mensagem definida em ErrorMessage . |
Se o que você procura não esta nesta lista você pode pesquisar outros atributos na Library da Microsoft
Exemplo de Classe utilizando as validações
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; using System.Web.Mvc; public class Cadastro { [Key] public int id { get; set; } [Required(ErrorMessage="Nome de Usuário deve ser informado!")] [StringLength(50, MinimumLength = 10, ErrorMessage = "Nome deve ter entre 10 e 50 caracteres!")] public string Nome { get; set; } [Display(Name = "Data Nascimento")] [Required(ErrorMessage = "Data deve ser preenchida")] [RegularExpression(@"^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))| (29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$", ErrorMessage = "Data invalida")] public string DataNascimento { get; set; } [Display(Name = "Horário Entrada")] [Required(ErrorMessage = "Hora invalida")] [RegularExpression(@"^([0-1][0-9]|[2][0-3]):([0-5][0-9])$", ErrorMessage = "Formato invalido (HH:MM)")] public string HoraInicio { get; set; } [Display(Name = "Salário")] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:###,##0.00}")] public double? Salario { get; set; } [Display(Name = "E-mail")] [Required(ErrorMessage = "E-mail deve ser preenchido!")] [RegularExpression(@"^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*\s+<(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})>$|^(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})$", ErrorMessage = "Formato do E-mail Inválido")] [Remote("EmailUnico", "Home", ErrorMessage = "e-mail já cadastrado")] public string Email { get; set; } [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] [DataType(DataType.Date, ErrorMessage = "Uma data válida deve ser informada!")] public DateTime? Data { get; set; } [Display(Name = "Senha")] [Required(ErrorMessage = "Senha deve ser preenchida!")] [StringLength(15, MinimumLength = 4, ErrorMessage = "Senha deve ter entre 4 e 15 caracteres")] public string Senha { get; set; } [Display(Name = "Confirmar Senha")] [Compare("Senha", ErrorMessage = "Senhas informadas não conferem")] public string ConfirmarSenha { get; set; } }
No caso do RegularExpression
estamos utilizando uma expressão regular para gerar um e-mail valido, Exemplos de expressões regulares úteis.
No caso do Remote
estamos chamando a action EmailUnico
no Controller Home
, onde verificamos em nossa base se o e-mail digita já esta cadastrado.
Exemplo de action
para validação do e-mail
public ActionResult EmailUnico(string Email) { boolean emailValido = false; emailValido = chamada a sua classe de verificacao de email com retorno (true/false) return Json(emailValido , JsonRequestBehavior.AllowGet); }
Exemplo de action
para validação do e-mail exibindo mensagem personalizada
public ActionResult EmailUnico(string Email) { boolean emailValido = false; emailValido = chamada a sua classe de verificacao de email com retorno (true/false) if (emailValido == true) { return Json(true, JsonRequestBehavior.AllowGet); } else { return Json(string.Format("E-mail '{0}' já esta cadastrado.", Email), JsonRequestBehavior.AllowGet); } }
Podemos ainda criar nossas próprias validações, por Data Annotation
, em nossa página você vai encontrar diversos atributos para validar datas, horas, e-mail, números entre outros, sinta-se a vontade e deixe seu comentário ele é muito importante..
Links Relacionados
- Atributo para validar Datas utilizando Data Annotation em Asp.Net MVC 4 com C# (CSharp).
- Atributo para validar E-mails utilizando Data Annotation em Asp.Net MVC 4 com C# (CSharp)
- Atributo para validar Horas utilizando Data Annotation em Asp.Net MVC 4 com C# (CSharp)
- Atributo para validar Números utilizando Data Annotation em Asp.Net MVC 4 com C# (CSharp)
- Atributo para validar Senhas utilizando Data Annotation em Asp.Net MVC 4 com C# (CSharp).
- Aula 04 - Validação com Data Annotation (Parte 01) em Asp.Net MVC 4 com C#(CSharp) Visual Studio 2013
- Aula 05 - Validação com Data Annotation (Parte 02) / Mascaras com JQuery-Mask em Asp.Net MVC 4 com C#(CSharp)
- Aula 06 - Validação com Data Annotation (Parte 03) / Números em Asp.Net MVC 4 com C#(CSharp)
- Aula 07 - Validação com Data Annotation (Parte 04) / Validação Remota (Attribute Remote) em Asp.Net MVC 4 com C#(CSharp)
- Aula 08 - Validação com Data Annotation (Parte 05) / Validação E-mail, Senha e Atributo Compare, Ignora Validações em Asp.Net MVC 4 com C#(CSharp)
- Dígito verificador do CNPJ em C# (CSharp)
- Dígito verificador do CPF em C# (CSharp)
- Exemplo de Stored Procedure com tratamento de erros e transação. (SqlServer)
- Expressões Regulares [RegularExpression]
- Ignorar validações em Data Annotation em C# (CSharp)
- ModelBinder - Customizando o vinculo do Modelo com o HTML em Asp.Net MVC 4 com C# (CSharp)
- Protegendo seu site de ataques (CSRF ) com ValidateAntiForgeryToken Asp.Net MVC4 com C#(CSharp)
- Validar Modelos com Data Annotation e Windows Form Application C#(CSharp)
Comentários
Verifique nossa postagem Mascaras com JQuery-Mask, lá vai acha o o que esta procurando http://www.codigoexpresso.com.br/Home/Postagem/40
Estou precisando de expressao regular de Numero de Telefone
Melhoramos o material sobre Remote, agora você conta com exemplo para customizar sua mensagem de erro.
Adicionei RegularExpression para validar campos Data e Hora, utilizando campos string, você deve converter para data para gravar no banco de dados e converter novamente para string para salvar na Classe.
Estou precisando de expressão regular para validar datas, pode me ajudar ?