mvc中自定义验证逻辑

上一篇中讲解了mvc中的远程验证,也就是ajax验证,本章继续介绍mvc中的自定义特性验证方式

asp.net mvc自定义验证逻辑分为两种方式:客户端验证与服务端验证

相应的涉及到两个接口ValidationAttribute,IClientValidatable


ValidationAttibute服务端验证,IClientValidatable客户端验证


本章重点,ValidationAttribute服务器端验证。自定义特性验证必须要实现ValidationAttribute中的IsValid至少一个重载方法


 

public class MaxWordsAttribute : ValidationAttribute
    {
        private readonly int _maxWords;
        //构造器
        public MaxWordsAttribute(int maxWords)
        {
            _maxWords = maxWords;
        }
        //验证方法
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (value != null)
            {
                var valueAsString = value.ToString();
                if (valueAsString.Split(' ').Length > _maxWords)
                {
                    return new ValidationResult("Too many words");
                }
            }
            return ValidationResult.Success;
        }
    }

代码上面大家通过注释都能够了解,调用方式和asp.net mvc内置的验证方式一样,如下

        [Required]

        [MaxWords(2,ErrorMessage = "很多单词了 {0}")]

        public string Name { get; set; }

好,看下运行的结果

21175639_zzGl.png


看到我们自定义的特性效果出来了,有成就感吧,但是细心的程序猿朋友应该注意到,自定义特性的ErrorMessage消息没有显示出来,因为代码中我们写死了,如何通过参数将ErrorMessage传进去呢,

21175639_tw3T.png

运行代码后的效果为:

21175639_hv6t.png

参考资料:ASP.NET MVC系列一:(6)自定义验证逻辑

转载于:https://my.oschina.net/ourcodelife/blog/663989

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值