I have a simple question (or not).
Why, when I check my object, the code below checks one part in a while.
If DataAnnotations fails, Validate from IValidatableObject is not called. If the DataAnnotations is OK, Validate from IValidatableObject is called.
My question is why? I see no reason for this. Did I miss something?
This is my class (for example):
class Foo : IValidatableObject
{
[Required]
public DateTime Date { get; set; }
public virtual IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var errors = new List<ValidationResult>();
if (Date.Ticks > DateTime.Today.Ticks)
{
errors.Add(new ValidationResult("Some error.", new[] { "Date" }));
}
return errors;
}
}
This is my check:
var dto = new Foo();
validationResults = new List<ValidationResult>();
var context = new ValidationContext(dto, null, null);
Validator.TryValidateObject(dto, context, validationResults, true);
source
share