码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2014-07-07 22:31:33      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   width   

原文: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

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

标签:style   blog   http   color   使用   width   

原文地址:http://www.cnblogs.com/lonelyxmas/p/3812875.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!