2013-05-27 104 views
6

我有我的實體設置與Data Annotation驗證屬性,我試圖驗證它使用靜態Validator類,但我得到不同的例外,這不是正確的方式來做它:使用System.ComponentModel.DataAnnotations.Validator驗證屬性

string _ValidateProperty(object instance, string propertyName) 
     { 
      var validationContext = new ValidationContext(instance, null, null); 
      validationContext.MemberName = propertyName; 
      var validationResults = new List<ValidationResult>(); 
      var isValid = Validator.TryValidateProperty(instance, validationContext, validationResults); 
      if (isValid) 
       return string.Empty; 
      return validationResults.FirstOrDefault<ValidationResult>().ErrorMessage; 
     } 

回答

8

你還沒有說你是什麼接收Exception但似乎你是通過你的實例的TryValidateProperty方法時,你應該傳遞值的特定屬性的。取而代之的

Validator.TryValidateProperty(instance, validationContext, validationResults); 

嘗試

Validator.TryValidateProperty(propertyValue, validationContext, validationResults); 

,你將不得不通過propertyValue到您的方法(或反射,這將是比較慢)

_ValidateProperty(someObject, "Field1", someObject.Field1); 
+1

那麼,你是C. orrect,我不知道我在哪裏閱讀小心不要將屬性值傳遞給TryValidateProperty,而是實際的對象實例,但我應該做到這一點,謝謝,當網站讓我的時候,我會給你賞金12小時後。 –