Tag Archives: aspnet mvc

DemoWebApp – DataAnnotation # 1

DemoWebApp – DataAnnotation # 1

Continuando a saga das noções básicas de WebApp MVC, veja como criar algumas aplicações base, e entender como nosso trabalho é facilitado pelos recursos oferecidos no .NET Framework Asp.Net Web MVC. Vamos lá:

Hoje iremos criar a primeira WebApp MVC com validação de e-mail usando DataAnnotations.

O Projeto

A primeira etapa é criar um projeto do tipo Web|Template Internet ApplicationDemoWebAPP”.

Este projeto padrão implementa as funções de registro de usuários e login com FormsAuthentication.

O projeto possui a função de registro de novos usuários. Vamos customizar para que o user name seja um e-mail, para isso devemos aplicar uma validação no momento da criação do novo usuário.

znet_dataannotations

Resultado final da webapp. Quando clicamos em Criar Usuário teremos a página para cadastrar um novo usuário.

O Modelo

AccountModel.cs

A segunda etapa é definir o Model do projeto na pasta Models.

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

public class RegisterModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm password")]
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }
}

Note que para realizar a validação precisamos decorar a propriedade do campo da classe:

[Required]
[Display(Name = "User name")]
[DataType(DataType.EmailAddress, ErrorMessage = "E-mail em formato inválido.")]

public string UserName { get; set; }

Neste outro exemplo estou realizando validações nos campos definidos da classe UsuarioModel.

namespace PrimeiraAPP_MVC4.Models
{
    public class UsuarioModel
    {
        [DisplayName("Primeiro Nome")]
        [StringLength(50, ErrorMessage = "O campo Nome permite no máximo 50 caracteres!")]         
        public string nome { get; set; }

        [Required]
        public string sobrenome { get; set; }
        public string endereco { get; set; }

        [StringLength (50)]
        [Required(ErrorMessage="Informe o Email")]
        [RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "Email inválido.")]
        public string email { get; set; }
        
        [DataType(DataType.Date)]
        public DateTime nascimento { get; set; }
    }
}

Os atributos de validação:

  • Required : Torna o valor do campo obrigatório.
  • StringLength: Para definir o comprimento máximo do campo.
  • Range: Para definir o valor mínimo e máximo.
  • DataType: Para definir o tipo suportado pelo campo.

De volta para a classe RegisterModel. Tente realizar um registro e veja que a validação do formato de e-mail não funciona, ou seja, um usuário de nome “Teste” será registrado sem ser criticado pela validação.

Esta seria a função do atributo DataType, mas não, este atributo é apenas usado para formatar e não validar.

No .Net Framework 4.5 há um novo atributo System.ComponentModel.DataAnnotations.EmailAddressAttribute, um tipo de atributo projetado para validar:

[Required]
[Display(Name = "User name")]
[EmailAddress(ErrorMessage = "E-mail em formato inválido.")]

public string UserName { get; set; }

Note a utilização do parâmetro ErrorMessage que define o texto exibido, em outros casos basta usar o parâmetro [EmailAddress] que a validação é aplicada.

RegExp

Variação de uma validação utilizando regex:

[Required]
[Display(Name = "User name")]
[RegularExpression(@"b[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}b", ErrorMessage = "E-mail em formato inválido.")]

public string UserName { get; set; }

Pronto! Acabamos de implementar um simples WebApp MVC 4.

Missão Cumprida!

Keep Programming!