當這些對象位於簡單對象上時,我可以驗證Data Annotation和IValidatableObject。但是,在對象具有必須驗證的屬性的情況下,事情會發生錯誤。一次爲DataAnnotation和IValidatableObject顯示所有驗證錯誤
public class BaseClass
{
public IEnumerable<ValidationResult> Validate()
{
var results = new List<ValidationResult>();
var validationContext = new ValidationContext(this, null, null);
Validator.TryValidateObject(this, validationContext, results, true);
return results;
}
}
public class Class1 : BaseClass, IValidatableObject
{
public Class1()
{
Property1 = new Class2();
}
public Class2 Property1 { get; set; }
//[Required]
public string AString1 { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var e = new ValidationResult("Error from class1");
var s = Property1.Validate();
var r = new List<ValidationResult>(s) { e };
return r;
}
}
public class Class2 :BaseClass, IValidatableObject
{
public Class2()
{
Property2 = new Class3();
}
public Class3 Property2 { get; set; }
//[Required]
public string AString2 { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
yield return new ValidationResult("Error from class2");
}
}
public class Class3:BaseClass
{
//[Required]
public string AString3 { get; set; }
}
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
var s = new Class1();
var results = s.Validate();
Assert.AreEqual(5, results.Count());
}
}
這個小代碼片段返回2個錯誤。這兩個來自IValidatableObject的Validate方法。這可以。但是,如果我取消註釋三個「必需」數據註釋,我應該有5個錯誤(2個來自Validate方法,3個來自Data Annotation)。
爲什麼當我取消註釋三個數據註釋,我只有一個錯誤「需要AString1字段。」這是第一類數據註釋?
我怎樣才能返回五個錯誤?
相關,http://stackoverflow.com/questions/3400542/how-do-i-use-ivalidatableobject/3400627 – user960567