2009-10-30 41 views
3

ASP.NET MVC 2属性,基于DataAnnotation属性像这样将支持验证:.NET:DataAnnotation一般

public class User 
{ 
    [Required] 
    [StringLength(200)] 
    public string Name { get; set; } 
} 

我怎么能检查当前的模型状态是有效使用只有纯粹。 NET(不使用MVC绑定,控制器方法等)?

在理想情况下,这将是一个方法:

bool IsValid(object model); 

回答

7

代码样品来自史蒂夫桑德森的blogxVal(它使用DataAnnotationsAttribute验证属性)。基本上,你只需要使用反射枚举属性并检查IsValid():。

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); 
    } 
} 
+0

我基本上做了我自己的验证,很像数据验证属性如何在MVC项目上工作,我基本上做了同样的事情。 – Min 2009-10-30 14:59:08