自定义注解

 //所有的特性必须要继承ValidationAttribute
    public class MaxWordsAttribute : ValidationAttribute
    {
        //该参数是验证条件【构造函数里面可以增加验证条件】
        private readonly int _maxWords;
        public MaxWordsAttribute(int maxWords)
            : base("{0} 输入的姓氏单词数量过大!")//提供默认的错误提示消息
        {
            _maxWords = maxWords;//显示最大单词数量
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="value">当前model某成员【属性】的值</param>
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (value != null)
            {
                string valueAsString = value.ToString();
                if (valueAsString.Split(' ').Length > _maxWords)
                {
                    //当前model某成员的名称【即:属性名称】
                    //这种方式有利于 程序员在使用特性的时候可以自定义错误提示消息【ErroMessage=...】
                    string erroMessage = FormatErrorMessage(validationContext.DisplayName);
                    return new ValidationResult(erroMessage);
                }
            }
            //验证通过了就直接返回 ValidationResult.Success;
            return ValidationResult.Success;
        }
    }

 

posted @ 2014-12-24 17:21  JasonGu0  阅读(121)  评论(0编辑  收藏  举报