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: }
- Que el nombre no sea nulo
- Que tenga entre 4 y 20 caracteres
- El apellido igual
- La edad que sea mayor de 18
- Y el mail correctamente formado
Si, no es muy difícil, pero lo hacemos con algunos método o qué se yo y después las reglas cambian, hay que buscar por todo el código, es más, si llegamos a utilizar esta entidad en varios proyectos (desde varios assembies quiero decir) se pone medio feo, porque tenemos que tener las reglas de validación públicas, en fin.
Cómo se hace con VAP, bueno hay tres modos, por atributos, por configuración o ambos.
Validacion por atributos
Existe una serie de atributos para realizar las validaciones con VAP se encuentran en Microsoft.Practices.EnterpriseLibrary.Validation.Validators, hay muchos (me da un poco de fiaca escribirlos) pero les aseguro que hay para todos los gusto, y es más, podemos escribir los propios, eso lo vamos a ver más adelante. Veamos como decoramos nuestra clase Persona con los atributos.
1: public class Persona
2: {
3: [RegexValidator(@"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$", MessageTemplate = "El email no es válido")]
4: public string Email
5: {
6: get { return _email; }
7: set { _email = value; }
8: }
9:
10: [NotNullValidator(MessageTemplate = "El apellido no puedo estar vacío")]
11: [StringLengthValidator(4, 20, MessageTemplate = "El largo del mensaje debe estar en 4 y 20 caracteres")]
12: public string Apellido
13: {
14: get { return _apellido; }
15: set { _apellido = value; }
16: }
17:
18: [NotNullValidator(MessageTemplate = "El nombre no puedo estar vacío")]
19: [StringLengthValidator(4, 20, MessageTemplate = "El largo del mensaje debe estar en 4 y 20 caracteres")]
20: public string Nombre
21: {
22: get { return _nombre; }
23: set { _nombre = value; }
24: }
25:
26: [RangeValidator(18, RangeBoundaryType.Inclusive, 90, RangeBoundaryType.Inclusive)]
27: public int Edad
28: {
29: get { return _edad; }
30: set { _edad = value; }
31: }
32: }
33: public void Validar()
34: {
35: ValidationResults results = ValidationFactory.CreateValidator().Validate(p);
36: if (!results.IsValid)
37: {
38: StringBuilder sb = new StringBuilder("Errores de validación");
39: sb.AppendLine();
40:
41: foreach (ValidationResult result in results)
42: {
43: sb.AppendLine(result.Message);
44: }
45: Console.WriteLine(sb.ToString());
46: }
47: else
48: {
49: Console.WriteLine("todo bien");
50: }
51:
52: }
1 comentario:
Estoy trabajando en un proyecto utilizando asp.net ajax framework 3.5
using ...validation.validators;
[NotNullValidator]
....
[RegexValidator(@"\(\d{3}\) \d{3}-\d{4}")]
....
private int _edad;
[Int32RangeValidator(23,50)]
public int Edad
{
get { return _edad; }
set { _edad = value; }
}
Me marca error en Int32RangeValidator, me dice que falta un using o una referencia.
He observado en el explorador de objetos y no me aparece el atributo Int32RangeValidator,
He probado con todas las versiones de Enterprise Library 3.0 2006, 3.0 2007, 3.1, 4.1 y en ninguna de las versiones me aparece dicho atributo.
Ojala me puedas apoyar mi correo es vallejosantes@gmail.com
Publicar un comentario