que tienen una clase personalizada (para ser simple):Validator.ValidateObject con "validateAllProperties" a cierto parada en primer error
using System;
using System.ComponentModel.DataAnnotations;
public class MyClass {
[Required]
public string Title { get; set;}
[Required]
public string Description { get; set;}
}
que desea validar este objeto, y obtener una excepción con todo lo que no es correcto.
Si hago:
void Validate() {
var objectToValidate = new MyClass { }; // Both properties are null at this time
var ctx = new ValidationContext(objectToValidate, null, null);
Validator.ValidateObject(objectToValidate, ctx, true);
}
Un ValidationException se lanza pero muestra sólo el primer error, incluso especifico cierto que el parámetro validateAllProperties
.
si refactorizar un poco mi código:
void Validate() {
var objectToValidate = new MyClass { }; // Both properties are null at this time
var ctx = new ValidationContext(objectToValidate, null, null);
var errors = new List<ValidationErrors>();
var isValid = Validator.TryValidateObject(objectToValidate, ctx, errors, true);
if(!isValid) {
throw new AggregateException(
errors.Select((e)=>new ValidationException(e.ErrorMessage)
);
}
}
realidad puedo tener todos mis errores.
¿Por qué funciona el primer fragmento de código como se esperaba? ¿Hice algo mal?
THX
Gracias por el código. La clase ValidationErrors debe ser ValidationResult. – WhiteKnight