2010-04-19 52 views
2

我在写一个验证属性,它坐落在类上,但检查类的属性。我希望它为每个它认为无效的属性设置验证消息。我该怎么做呢?如何动态设置具有类验证属性的属性的验证消息

这是我这么远:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] 
    public class LinkedFieldValidationAttribute : ValidationAttribute 
    { 
     private readonly string[] _properiesToValidate; 

     public LinkedFieldValidationAttribute(params string[] properiesToValidate) 
     { 
      _properiesToValidate = properiesToValidate; 
     } 

     public override bool IsValid(object value) 
     { 
      PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(value); 

      foreach (var propertyName in _properiesToValidate) 
      { 
       var propertyValue = properties.Find(propertyName, false).GetValue(value); 
       //if value is invalid add message from base 
      } 

      //return validity 
     } 
    } 

回答

0

使用the other overload of IsValid可以返回ValidationResult而不是bool

+0

这似乎是.net 4.0,有没有3.5方法? – Dan 2010-04-19 14:40:36

+0

我不知道。你可以尝试设置'ErrorMessage'。 – 2010-04-19 15:09:11

+0

ErrorMessage只是一个字符串 - 没有办法设置它与类属性之间的关联,我不认为? – Dan 2010-04-19 15:39:40