代码之家  ›  专栏  ›  技术社区  ›  alexey

.NET:一般的DataAnnotation属性

  •  3
  • alexey  · 技术社区  · 15 年前

    ASP.NET MVC 2将支持基于 数据批注 像这样的属性:

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

    如何检查当前模型状态是否有效 只有纯.net (不使用mvc绑定、控制器方法等)?

    理想情况下,这将是一种单一的方法:

    bool IsValid(object model);
    
    1 回复  |  直到 15 年前
        1
  •  7
  •   scottm    15 年前

    此代码示例来自Steve Sanderson的 blog 关于 xVal (使用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);
        }
    }