viernes, 20 de julio de 2007

Validaton Application Block desde Web Config

Introducción En la entrada anterior vimos como crear validaciones agregando atributos a nuestras clases, ahora vamos a ver como podemos hacer el mismo trabajo sin tocar para nada las clases, incluso podemos aplicar reglas de validación a clases a las cuales no tenemos acceso al código, todo gracias al VAP. Comencemos Tomemos nuestra clase y quitemos todos los atributos.
1:     public class Persona
2:     {
3:         private int _edad;
4:         private string _nombre;
5:         private string _apellido;
6:         private string _email;
7:  
8:         public string Email
9:         {
10:             get { return _email; }
11:             set { _email = value; }
12:         }
13:         public string Apellido
14:         {
15:             get { return _apellido; }
16:             set { _apellido = value; }
17:         }
18:         public string Nombre
19:         {
20:             get { return _nombre; }
21:             set { _nombre = value; }
22:         }
23:         public int Edad
24:         {
25:             get { return _edad; }
26:             set { _edad = value; }
27:         }
28:     }
Ahora, agregamos un App.Config y lo abrimos con el editor de EntLib. Acto seguimos hacemos click derecho y seleccionamos Add Validation Application Block Acto seguido seleccionado Add New Rule Set y le ponemos de nombre Default Luego agregamos un nuevo tipo, con esto vamos a agregar nuestra clase Persona. Buscamos el tipo en el cuadro que aparece y luego hacemos botón derecho y selecionamos Choose Members Y seleccionamos las propiedades que queremos validar Hacemos botón derecho sobre el Apellido (por ejemplo) y seleccionado New -> Not Null Validator Presionamos F4 y modificamos sus propiedades para que nos muestre un mensaje en caso de no superar la validación desde la propiedad Message Template Y seguimos agregando los validadores, utilizamos el código de validación que vimos antes
   1:              Persona p = new Persona();
   2:   
   3:              Console.WriteLine("Ingrese nombre");
   4:              p.Nombre = Console.ReadLine();
   5:   
   6:              Console.WriteLine("Ingrese apellido");
   7:              p.Apellido = Console.ReadLine();
   8:   
   9:              Console.WriteLine("Ingrese edad");
  10:              p.Edad = Convert.ToInt32(Console.ReadLine());
  11:   
  12:              Console.WriteLine("Ingrese email");
  13:              p.Email = Console.ReadLine();
  14:   
  15:              ValidationResults results = ValidationFactory.CreateValidator("Default").Validate(p);
  16:   
  17:              if (!results.IsValid)
  18:              {
  19:   
  20:                  StringBuilder sb = new StringBuilder("Errores de validación");
  21:                  sb.AppendLine();
  22:   
  23:                  foreach (ValidationResult result in results)
  24:                  {
  25:                      sb.AppendLine(result.Message);
  26:                  }
  27:   
  28:                  Console.WriteLine(sb.ToString());
  29:              }
  30:              else
  31:              {
  32:                  Console.WriteLine("todo bien");
  33:              }

Lo corremos y eureka!! funciona, buenísimo y muy flexible. En la próxima vemos como hacer nuestros propios validadores.