Я пытаюсь проверить вложенные объекты (не модели в MVC senss), используя аннотации и некоторый пользовательский код.
Я нашел следующий пост полезным
Использование проверки аннотаций данныхВручную и графы объектов
Как было предложено в ответе, я создал дополнительную подпрограмму в классе контейнера для проверки правильности вложенного объекта.Вот мой модифицированный тестовый код
public class Customer : IValidatableObject
{
public Customer()
{
Details = new CustomerDetails();
}
[Required]
[MaxLength(2)]
public string Name
{
get;
set;
}
public CustomerDetails Details
{
get;
private set;
}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var context = new ValidationContext(this.Details, validationContext.ServiceContainer, validationContext.Items);
var results = new List<ValidationResult>();
Validator.TryValidateObject(this.Details, context, results);
return results;
}
}
Однако у меня возникают проблемы с получением all ошибок проверки, даже при вызове TryValidateObject с validateAllProperties, установленным в true.
var context = new ValidationContext(cs, null, null);
var results = new List<ValidationResult>();
Validator.TryValidateObject(cs, context, results,true);
Если в контейнере есть какие-либо ошибки, будут отображаться только они.Только когда в объекте контейнера нет ошибок, будут отображаться ошибки во вложенном объекте.Я подозреваю, что это как-то связано с процедурой Validate, которая возвращает полный список, и не может быть добавлена в (существующий) список из контейнера (?)
Есть ли какие-либо изменения, которые я могу внести в подпрограммуполучить все ошибки, чтобы показать?