1
我在屬性上使用了很多EF4 POCO實體和一些默認的DataAnnotations ValidationAttribute(Required,StringLength,RegularExpression等)(這是由我們使用的一些T4腳本生成的),我想通過自定義驗證實體IValidatableObject接口。我可以使用IValidatableObject接口進行自動基本DataAnnotations驗證嗎?
我的問題是: 我可以在執行IValidatable.Validate()方法時調用一些基本方法來驗證Assositiated ValidationAttribute的所有屬性嗎?編寫相同的代碼來驗證每個屬性會花費很多時間。
實施例驗證:
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
ICollection<ValidationResult> validationResults = new List<ValidationResult>();
if (string.IsNullOrEmpty(DatabaseName))
{
validationResults.Add(new ValidationResult(Messages.Error_OrderedComponentDatabase_DatabaseName_Required, new string[] { "DatabaseName" }));
}
else if (DatabaseName.Length > 50)
{
validationResults.Add(new ValidationResult(Messages.Error_OrderedComponentDatabase_DatabaseName_TooLong, new string[] { "DatabaseName" }));
}
return validationResults;
}
優選實現(僞碼):
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
ICollection<ValidationResult> validationResults = someInstance.ValidateOnDataAnnotations(this);
// do some extra custom validation...
return validationResults;
}
任何建議是歡迎!提前致謝。
所有這些示例驗證內置。所以你爲什麼重複它? – Eranga
需要在嚮導控件中進行部分驗證。 – J2011