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

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

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

 

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

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

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

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

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

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

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

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

  Register.cshtml视图

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

效果:

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

 

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

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

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

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

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

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

 

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

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

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

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

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

效果:

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

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

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

上一篇:MVC验证12-使用DataAnnotationsExtensions对整型、邮件、最小值、文件类型、Url地址等验证


下一篇:MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证