2013-05-27 34 views
6

Tôi có thiết lập thực thể của mình với các thuộc tính xác thực Data Annotation và tôi đang cố xác thực nó bằng cách sử dụng lớp tĩnh Validator nhưng tôi nhận được các ngoại lệ khác nhau, đây không phải là cách đúng để làm nó:Xác thực các thuộc tính với 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; 
     } 

Trả lời

8

bạn havent nói gì Exception bạn nhận được nhưng nó xuất hiện bạn đang đi qua ví dụ của mình với phương TryValidateProperty khi bạn nên đi qua giá trị tài sản cụ thể.

Thay vì

Validator.TryValidateProperty(instance, validationContext, validationResults); 

thử

Validator.TryValidateProperty(propertyValue, validationContext, validationResults); 

bạn sẽ phải vượt qua propertyValue xuống phương pháp của bạn (hoặc sử dụng phản ánh mà sẽ chậm hơn)

ví dụ

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

Vâng, bạn là c orrect, tôi không biết nơi tôi đã đọc để được cẩn thận không để pas giá trị tài sản để TryValidateProperty nhưng thay vì trường hợp đối tượng thực tế, tuy nhiên tôi nên đã làm điều đó, Cảm ơn bạn, tôi sẽ cung cấp cho bạn tiền thưởng khi trang web cho tôi sau 12 giờ. –

Các vấn đề liên quan