ASP.NET MVC 2 - DataAnnotations

Una de las nuevas funcionalidades que tiene el Preview 2 del ASP.NET MVC 2 es la implementación de DataAnnotations (System.ComponentModel.DataAnnotations).

DataAnnotations nos permite escribir nuestras validaciones en un solo lugar, en nuestra clase de validación, de esta forma nos apegamos al concepto DRY (Dont-Repeat-YourSelf), ya que de lo contrario hubiesemos tenido que tener logica de validación mezclada tanto en la capa de presentación (nuestros Views & codigo jQuery/Ajax) y dentro de nuestros objetos de negocio.

Vamos a ver como funciona todo esto. Lo primero que debemos tener es un modelo, para esto vamos a usar algo bien simple, una clase de Empleado:Esta primera clase la pudieron haber creado con el modelo u ORM que usan habitualmente: LINQ2SQL, Entity Framework, nHibernate, lo unico que debe tenerse en cuenta es que debe ser una clase parcial ya que en el proximo paso vamos a tener que extenderla.


   1:  public partial class Empleado
   2:  {
   3:      public string Nombre {get; set;}
   4:      
   5:      public int DepartamentoId {get; set;}
   6:  }



En el proximo paso lo que vamos a hacer es crear una clase nueva donde se van a guardar todas las reglas para las validaciones sobre las propiedades y atributos de nuestras clases.



   1:  [MetadataType(typeof(EmpleadoMetaData))]
   2:  public partial class Empleado
   3:  {
   4:  public string Nombre {get; set;}
   5:   
   6:  public int DepartamentoId {get; set;}
   7:  }
   8:   
   9:  class EmpleadoMetaData
  10:  {
  11:  [Required(ErrorMessage = ("El nombre es un campo requerido"))]
  12:  public string Nombre {get; set;}
  13:   
  14:  [Required(ErrorMessage = ("Debe especificar un departamento"))]
  15:  public int DepartamentoId {get; set;}
  16:  }



Lo que hemos hecho aqui es crear una clase nueva para poder tener toda nuestra logica de validacion separada y en un solo sitio y luego utilizando el atributo MetadataType hemos asociado ambas clases.

El proximo paso es incluir los archivos necesarios para que nuestras vistas generen la logica de validación necesaria del lado del cliente.

En el codigo de la vista (preferiblemente en el MasterPage) incluyan estas declaraciones:


   1:  <script type="text/javascript" src="../../Scripts/jquery-1.3.2.min.js">script>
   2:  <script type="text/javascript" src="../../Scripts/jquery.validate.min.js">script>
   3:  <script type="text/javascript" src="../../Scripts/MicrosoftMvcJQueryValidation.js">script>



El ultimo paso es especificarle al view que genere la logica de jQuery, esto lo hacemos con solo una linea de codigo adicional!!!:



   1:  <% Html.EnableClientValidation(); %> 



Listo. Con esto ya tenemos validación del lado del cliente generada automaticamente con la libreria jQuery, y para aquellos usuarios curiosos que apagan el JavaScript aun permanece la validación del lado del servidor.