2010-04-19 47 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