MVC验证03-自定义验证规则、禁止输入某些值

时间:2014-07-07 22:31:33   收藏:0   阅读:268
原文:MVC验证03-自定义验证规则、禁止输入某些值

本文继续体验自定义验证规则,需求是禁止输入某些值。本文与前2篇相关,请参考:
MVC验证01-基础、远程验证  
MVC验证02-自定义验证规则、邮件验证 

 

  自定义验证特性继承ValidationAttribute,并实现IClientValidatable接口

bubuko.com,布布扣展开

  把自定义属性打到View model的属性上

bubuko.com,布布扣展开

[NoInput("demo",ErrorMessage = "不能使用此名称")],即当输入demo的时候就报错。

  扩展jquery的验证方法jQuery.validator.noinput.js并注册

jquery的验证扩展方法的逻辑基本上与自定义特性IsValid()方法一致。
自定义特性rule.ValidationParameters["input"]的键input要传递给$.validator.unobtrusive.adapters.addSingleVal()方法。

bubuko.com,布布扣展开

  Register.cshtml视图

bubuko.com,布布扣展开

效果:

bubuko.com,布布扣

 

  如果需要禁止多个值,需要重写自定义验证特性

这时候自定义特性的Input属性类型变成了string[],因为要判断多个值。
但前台rule.ValidationParameters["input"]存储的应该是string类型,所以保存的时候要把Input数组元素join起来。

bubuko.com,布布扣展开

  把自定义属性打到View model的属性上,但构造函数是用逗号分隔的字符串

bubuko.com,布布扣展开

[NoInput("demo,jack",ErrorMessage = "不能使用此名称")],当输入demo或者jack的时候都会报错。

 

  扩展jquery的验证方法jQuery.validator.noinput1.js并注册

需要把rule.ValidationParameters["input"]存储的值split成数组,在遍历判断。

bubuko.com,布布扣展开

  Register.cshmtl要引用jQuery.validator.noinput1.js

bubuko.com,布布扣展开

效果:

bubuko.com,布布扣

MVC验证03-自定义验证规则、禁止输入某些值,布布扣,bubuko.com

评论(0)
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!