Data Annotations é uma novidade no ASP.Net MVC, mas que foi introduzida no .Net Framework 3.5, são utilizados para validações.

Para utilizarmos basta apenas decoramos a propriedade com o atributo necessário conforme nossa necessidade de validação. Os atributos podem ser encontrados no namespace System.ComponentModel.DataAnnotations.

A figura 01 mostra os atributos que foram desenvolvidos até o momento pela equipe do Asp .Net MVC.

mvc_annotations_01
Figura 01 – Object Browser, DataAnnotations namespace

Atenção, nem todos os objetos listados são validações, somente aqueles marcado com “Attribute”, exceto “ValidationAttribute” que é a classe base.

Vamos ver na prática como isso funciona.

Estou aproveitando o projeto criado no post anterior sobre Asp .Net MVC 2.0, MeuSiteMVC, mas caso você não tenha acompanhado poderá criar o seu.

Com o projeto aberto, vamos criar uma nova classe. Clique com o botão direito na pasta Models e adicione uma classe, chame-a de “ClienteController.cs”, depois vá até a classe criada e renomeie a classe para “Cliente”, removendo a palavra “Controller” dela.

Adicione duas propriedades “Nome” e “Email”. Vamos decorar nossas propriedades com os atributos “Required”. Na propriedade “Nome” adicione também o atributo “StringLength” defina-o com 50, que será o número máximo de caracteres permitidos no nome e defina também a propriedade “ErroMessage” do atributo “StringLenght” com o texto: “O campo Nome permite no máximo 50 caracteres!”.

Defina também as mensagens de erro para os atributos da propriedade “Email”, feito isso sua classe irá se parecer com a da listagem 01

Listagem 01

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace MeuSiteMVC.Models
{
    public class Cliente
    {
        [Required(ErrorMessage="O campo Nome é obrigatório")]
        [StringLength(50,ErrorMessage="O campo Nome permite no máximo 50 caracteres!")]
        public string Nome { get; set; }

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

 

Agora vamos criar nossa classe ClienteController, clique com o botão direito em Controllers no Solution Explorer e selecione Add –> Controller conforme figura 02

mvc_annotations_02

Figura 02 – Adicionando ClienteController

Sua classe deverá estar como na listagem 02

Listagem 02

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MeuSiteMVC.Models;

namespace MeuSiteMVC.Controllers
{
    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)
            {
                return Content("Model valido!");
            }

            return View("Create");
        }
    }
}

Observem que nosso método Create possui uma condicional utilizando ModelState, isso faz com que quando efetuarmos o post, haja a verificação do lado servidor dos dados enviados. Caso não satisfaça a condição receberemos as mensagens de erro conforme programado.

Vamos criar agora nosso View, para isto basta clicarmos com o botão direito do mouse sobre a classe Cliente dentro do método Create e selecionarmos Add –> View.

Configure as informações de sua View conforme figura 03

mvc_annotations_03

Figura 03 – Criação da View

Seu código .aspx deverá ficar como na listagem 03.

Listagem 03

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MeuSiteMVC.Models.Cliente>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Create
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <h2>Create</h2>

    <% using (Html.BeginForm()) {%>

        <fieldset>
            <legend>Fields</legend>
            
            <div class="editor-label">
                <%= Html.LabelFor(model => model.Nome) %>
            </div>
            <div class="editor-field">
                <%= Html.TextBoxFor(model => model.Nome) %>
                <%= Html.ValidationMessageFor(model => model.Nome) %>
            </div>
            
            <div class="editor-label">
                <%= Html.LabelFor(model => model.Email) %>
            </div>
            <div class="editor-field">
                <%= Html.TextBoxFor(model => model.Email) %>
                <%= Html.ValidationMessageFor(model => model.Email) %>
            </div>
            
            <p>
                <input type="submit" value="Create" />
            </p>
        </fieldset>

    <% } %>

    <div>
        <%=Html.ActionLink("Back to List", "Index") %>
    </div>

</asp:Content>

Feito isso estamos prontos para testar nossa aplicação. Tecle F5, quando o site carregar, digite na barra de endereço após o número da porta “/Cliente”, isso fará com que nossa página cliente carregue, conforme a figura 04.

mvc_annotations_04

Figura 04 – Aplicação pronta para receber os dados.

Sem preencher os campos Nome e Email pressione o botão “Create” e veja que você irá receber as mensagens de erro conforme figura 05, isto porque adicionamos verificações nos atributos da classe Cliente de nossa aplicação.

mvc_annotations_05

Figura 05 – Mensagens de erro.

 

Bem, como puderam ver, Data Annotations nos ajudam a criar validações do lado servidor de forma bem simples visto que, já possuem muitos atributos prontos para utilização bastando apenas configurá-los em nossa aplicação.

Veremos num outro post o que mais Data Annotations podem fazer por nós, como atributos personalizados e validação do lado cliente.