Estoy intentando validar una clase decorada con anotación de datos con el Validator class.Validación de datosAnotaciones con Validador clase
Funciona bien cuando los atributos se aplican a la misma clase. Pero cuando trato de usar una clase de metadatos, no funciona. ¿Hay algo que deba hacer con el Validator para que use la clase de metadatos? Aquí hay algo de código ..
funciona esto: el trabajo
public class Persona
{
[Required(AllowEmptyStrings = false, ErrorMessage = "El nombre es obligatorio")]
public string Nombre { get; set; }
[Range(0, int.MaxValue, ErrorMessage="La edad no puede ser negativa")]
public int Edad { get; set; }
}
ésto no:
[MetadataType(typeof(Persona_Validation))]
public class Persona
{
public string Nombre { get; set; }
public int Edad { get; set; }
}
public class Persona_Validation
{
[Required(AllowEmptyStrings = false, ErrorMessage = "El nombre es obligatorio")]
public string Nombre { get; set; }
[Range(0, int.MaxValue, ErrorMessage = "La edad no puede ser negativa")]
public int Edad { get; set; }
}
así es como puedo validar los casos:
ValidationContext context = new ValidationContext(p, null, null);
List<ValidationResult> results = new List<ValidationResult>();
bool valid = Validator.TryValidateObject(p, context, results, true);
gracias.
No puedo encontrar ValidationContext dentro System.ComponentModel.DataAnnotations (MVC 2.0) estoy haciendo algo mal? – Myster
@Myster comprobar que System.ComponentModel.DataAnnotations.dll se hace referencia en el proyecto. – Pablote
Simplemente use esto [gist] (https://gist.github.com/JimmyBoh/b7c135820c18a06648a5) (un método de extensión) y puede llamar a p.Validate() –