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.

Giovanni Bassi

Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.