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