Могу ли я автоматически проверять сложные дочерние объекты при проверке родительского объекта и включать результаты в заполненный ICollection<ValidationResult>
?
Если я запустил следующий код:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace ConsoleApplication1
{
public class Person
{
[Required]
public string Name { get; set; }
public Address Address { get; set; }
}
public class Address
{
[Required]
public string Street { get; set; }
[Required]
public string City { get; set; }
[Required]
public string State { get; set; }
}
class Program
{
static void Main(string[] args)
{
Person person = new Person
{
Name = null,
Address = new Address
{
Street = "123 Any St",
City = "New York",
State = null
}
};
var validationContext = new ValidationContext(person, null, null);
var validationResults = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(person, validationContext, validationResults);
Console.WriteLine(isValid);
validationResults.ForEach(r => Console.WriteLine(r.ErrorMessage));
Console.ReadKey(true);
}
}
}
Я получаю следующий вывод:
False
The Name field is required.
Но я ожидал чего-то подобного:
False
The Name field is required.
The State field is required.
Я предложил щедрость для лучшего решения для проверки дочерних объектов, но не получил ни одного получателя, в идеале
- проверка дочерних объектов на произвольную глубину
- обработка нескольких ошибок на объект
- правильная идентификация ошибок проверки в полях дочерних объектов.
Я все еще удивлен, что фреймворк не поддерживает это.