【发布时间】:2011-01-30 10:19:48
【问题描述】:
我可以在验证父对象时自动验证复杂的子对象并将结果包含在填充的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);
}
}
}
我得到以下输出:
FalseThe Name field is required.
但我期待类似的东西:
FalseThe Name field is required.The State field is required.
我为更好的子对象验证解决方案提供了赏金,但理想情况下没有得到任何接受者
- 验证子对象到任意深度
- 处理每个对象的多个错误
- 正确识别子对象字段上的验证错误。
我仍然对框架不支持这一点感到惊讶。
【问题讨论】:
标签: c# validation data-annotations