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; 
    } 

任何建议是欢迎!提前致谢。

+0

所有这些示例验证内置。所以你为什么重复它? – Eranga

+0

需要在向导控件中进行部分验证。 – J2011

回答

相关问题