Это довольно много, что делает валидатор MVC за кадром:
Это будет перебирать все аннотации и понять OUR, если есть какая-то ошибка и добавить их в коллекцию об ошибке. Лучше всего поместить это в базовый класс, тогда у вас есть все остальные классы. если GetErrors().Any()
возвращает true, модель недействительна.
public IEnumerable<ErrorInfo> GetErrors() {
return from prop in TypeDescriptor.GetProperties(this).Cast<PropertyDescriptor>()
from attribute in prop.Attributes.OfType<ValidationAttribute>()
where !attribute.IsValid(prop.GetValue(this))
select new ErrorInfo(prop.Name, attribute.FormatErrorMessage(string.Empty));
}
Error Info Класс:
public class ErrorInfo{
public string Name { get; set; }
public string FormatErrorMessage { get; set; }
public ErrorInfo(string name, string formatErrorMessage){
Name = name;
FormatErrorMessage = formatErrorMessage;
}
}