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.
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
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
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.
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.
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.