ValidationAttribute
2016-02-17 15:42
281 查看
项目需要引用DataAnnotations;
在属性上声明Attribute
检测不合法的Attribute属性。首先获取类型中的所有属性,再遍历出不合法的Attribute
最后是通过获得的不合法Attribute生成错误信息,绑定到界面控件上
using System.ComponentModel.DataAnnotations;
在属性上声明Attribute
private string textContent; [RequiredAttribute(ErrorMessage = "[用户名]不能为空")] [StringLength(255, ErrorMessage = "[用户名]内容最大允许255个字符!")] [RegularExpression("^[A-Za-z0-9]+$", ErrorMessage = "[用户名]只能输入字母、数字!")] public string TextContent { get { return textContent; } set { textContent = value; OnPropertyChanged("TextContent"); OnPropertyChanged("Error"); } }
检测不合法的Attribute属性。首先获取类型中的所有属性,再遍历出不合法的Attribute
private readonly Dictionary<string, PropertyInfo> _propertyGetters = new Dictionary<string, PropertyInfo>(); private readonly Dictionary<string, ValidationAttribute[]> _validators = new Dictionary<string, ValidationAttribute[]>();
PropertyInfo[] properties = GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo propertyInfo in properties) { object[] customAttributes = propertyInfo.GetCustomAttributes(typeof(ValidationAttribute), true); if (customAttributes != null && customAttributes.Length > 0) { _validators.Add(propertyInfo.Name, customAttributes as ValidationAttribute[]); _propertyGetters.Add(propertyInfo.Name, propertyInfo); } }
最后是通过获得的不合法Attribute生成错误信息,绑定到界面控件上
public string Error { get { IEnumerable<string> errors = from d in _validators from v in d.Value where !v.IsValid(_propertyGetters[d.Key].GetValue(this, null)) select v.ErrorMessage; return string.Join(",", errors.ToArray()); } }
相关文章推荐
- NDK 开发实例
- POJ3254 Corn Fields(状压DP)
- 【BZOJ 3224】普通平衡树 模板题
- return ture & return false
- 20160217 更新物业收费管理
- TableViewCell加动画
- archive的时候报“ no identity found"错,怎么办?
- power designer导出word或html
- 彻底解决Spring MVC 中文乱码 问题
- 深入分析MySQL ERROR 1045 (28000)
- Nancy之Forms authentication的简单使用
- 在MainActivity的内部静态类PlaceholderFragment 类中的onCreateView中获取fragment_main.xml中控件
- 计算进位次数
- gerrit添加新用户
- log4j.properties配置详解
- Error: "源代码不可用于此位置"
- 使用jquery获取同组单选框中被选中项的value或给同组单选框赋值
- blog
- 格式化数字
- 【笔记】DOM探索基础篇(二)