2010-04-29 9 views
4

순수한 C# 응용 프로그램 인 프로젝트에서 DataAnnotations를 사용하고 있는데, DataAnnotations 특성에 대해 모델/문서의 유효성을 검사하는 가장 좋은 방법은 무엇입니까? 나하지만 내 친구 스티브 샌더슨에서클래스의 DataAnnotations 유효성 검사

답변

6

하지 :

internal static class DataAnnotationsValidationRunner 
{ 
    public static IEnumerable<ErrorInfo> GetErrors(object instance) 
    { 
     return from prop in TypeDescriptor.GetProperties(instance).Cast<PropertyDescriptor>() 
       from attribute in prop.Attributes.OfType<ValidationAttribute>() 
       where !attribute.IsValid(prop.GetValue(instance)) 
       select new ErrorInfo(prop.Name, attribute.FormatErrorMessage(string.Empty), instance); 
    } 
} 

당신이 원하는 경우에 당신은 당신이 실제로 이메일 주소의 유효성을 검사 [데이터 형식 (DataType.EmailAddress)]를 원하는 경우, 예를 들어,이을 향상시키기 위해 필요하거나 수 [MetadataType] 특성을 지원합니다.

13

이 이제 C# 4

var result = new List<ValidationResult>(); 
bool valid = Validator.TryValidateObject(Vehicle, new ValidationContext(Vehicle, null, null), result); 

이것은 또한 당신에게 검증의 세부 사항을 줄 것으로 구축된다.

관련 문제