Continuando a olhar o ASP.Net MVC 2 Preview 1, vou examinar agora o Data Annotations, uma novidade no ASP.Net MVC, mas que foi introduzida no .Net Framework 3.5 SP1. Já olhei outra funcionalidade da v2p1, o suporte a áreas, em um post anterior.

Os Data Annotations, ou simplesmente “anotações”, foram introduzidos no .Net Framework 3.5 SP1, principalmente por causa do Dynamic Data. Os Data Annotations são usados para realizar validação, de forma muito parecida ao do Validation Application Block (VAB) do Enterprise Library, então se você já conhece esta tecnologia e ainda não conhece os Data Annotations, vai achá-los bastante parecidos. O legal do Data Annotations é que ele é mais simples que o validation application block do Enterprise Library. O ruim é que tem menos validadores. Imagino que logo devam começar a aparecer novos validadores, se é que já não há algum projeto “Contrib” por aí.

Vejam as anotações disponíveis por enquanto (são todos os que terminam com “Attribute”, menos o “ValidationAttribute” que é a classe base abstrata):

Classes de validação no object browser

O time do ASP.Net MVC então passou a usar os atributos de anotações para realizar a validação no ASP.Net MVC. Simples, não é? Então tudo ficou muito simples. Vou validar uma classe de Posts:

public class Post
{
    [Required]
    public int Id { get; set; }
    [Required]
    public string Corpo { get; set; }
    [Required, StringLength(50)]
    public string Titulo { get; set; }
    [Required]
    [Range(typeof(DateTime), "2000-01-01", "2100-12-31")]
    public DateTime DataDePostagem { get; set; }
} 

Na hora que recebo ela na ação:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Post post)
{
    if (!ModelState.IsValid)
        return View(post);
    _repositorio.Salvar(post);
    return RedirectToAction("Index");
}

Ao chamar o método ModelState.IsValid estarão presentes também os erros resultantes da validação feita com as anotações. Simples, não é? Vejam o resultado da validação da classe Post, quando posto dados inválidos:

Resultado da validação com Data Annotations quando não posto nada  Resultado da validação com Data Annotations quando não posto dados inválidos

Estava na hora de a Microsoft incorporar isso no .Net Framework. Seria interessante se outros frameworks se integrassem agora ao Data Annotations, como o VAB, e o NH Validator.


Postado na(s) categoria(s) ASP.Net MVC pelo Giovanni Bassi em 5 de outubro de 2009 às 09:46 | Tags: ,

Comentários


Brazil Robson
outubro 5. 2009 22:06
Robson
Boa noite, Giovanni

Voce poderia me indicar um bom livro para começar a aprender ASP.NET MVC? (em ingles).

[]s (estou sempre lendo seu blog)

no site


outubro 7. 2009 08:45
Daniel Schmitz
Isso quer dizer que o exemplo de validação do NerdDinner (http://nerddinnerbook.s3.amazonaws.com/Part3.htm) está ultrapassado! Ainda bem, porque aquela validação "distorce" o nosso bom senso!

http://www.flex.etc.br/http://www.flex.etc.br/


Prodis a.k.a. Fernando Hamasaki de Amorim
Isso é muito bom e fácil de usar.
Mas senti falta de um "CustomAttribute".
Bom, imagino que seja tranquilo extender a classe ValidationAttribute para implementarmos nossas próprias validações.

http://prodis.pro.br/http://prodis.pro.br/


Prodis a.k.a. Fernando Hamasaki de Amorim
@Robson, eu conheço esses livros:

ASP.NET MVC in Action
www.amazon.com/.../ref=sr_1_7

ASP.NET MVC Framework Unleashed
www.amazon.com/.../ref=sr_1_11

Pro ASP.NET MVC Framework
www.amazon.com/.../ref=sr_1_21

Professional ASP.NET MVC 1.0
www.amazon.com/.../ref=pd_sim_b_1

Mas infelizmente ainda não consegui ler nenhum deles.

http://prodis.pro.br/http://prodis.pro.br/

Comentar


(Vai mostrar seu Gravatar)

  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading



Quem é Giovanni Bassi

Giovanni Bassi Sou uma pessoa apaixonada por tecnologia e especificamente por .Net. Sou consultor independente especialista em .Net, focado em arquitetura e melhores práticas. Tenho dezenas de artigos publicados na .Net Magazine, revista da qual sou editor técnico. Ministro palestras e cursos de vez em quando, e quando dá tempo eu respiro um pouco. Mais detalhes nesta página.

Busca

Selos

Eu vou ao TechEd Brasil 2010, e você?

MVP

MCPD

MCSD

.Net Magazine

Abaixo ao if!

Calendário

«  julho 2010  »
seteququsedo
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
Ver detalhamento de posts no calendário

Blogs interessantes

    OPMLDownload OPML file

    Postagens recentes

    Comentários recentes

    Disclaimer / Aviso
    As opiniões colocadas neste blog são minhas e pessoais e não expressam necessariamente as opiniões de meus empregadores, pareceiros e amigos. Da mesma forma, os comentários feitos por leitores do blog não expressam a minha opinião.

    © Copyright 2010 .Net Unplugged
    Log in