为下拉列表框添加一个自定义验证规则
来源:互联网 发布:c语言体会 编辑:程序博客网 时间:2024/05/16 12:26
开发它的原因:
之前的同事,也是我的哥们,问我下拉列表框是否可以支持验证,这个问题看似简单,但确实MVC里有为我们提供,所以,只能自己写个扩展了,即自己写一个attribute特性,让它继承ValidationAttribute,使它可以与其它MVC提供的验证一起使用.
MVC验证是怎么运行的:
在MVC的特性验证,很方便,很直接,它无论是在数据安全性上还是在页面表现上都做的不错,它的运行机制是这样的,前台表单验证规则有个名称,然后前台JS有对这个规则编写的代码,用来控制前台HTML标记的显示,而后台主要是生成验证规则和向前台参数赋值的。事实上,我们要知道的是,MVC验证不是简单的后台验证,它还有对前台页面的控制的JS部分,它一般被继承到了jquery.validate.min.js里了,如果我们要是自己开发一套验证规则,也需要自己的JS库与相配合。
说干就干
C#部分:
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)] public sealed class NotDefaultValueAttribute : ValidationAttribute, IClientValidatable { public string InputString { get; set; } public NotDefaultValueAttribute() { ErrorMessage = "请选其中一项"; } public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { ModelClientValidationRule rule = new ModelClientValidationRule { ValidationType = "notdefaultvalue", ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()) }; rule.ValidationParameters["inputstring"] = InputString; yield return rule; } public override bool IsValid(object value) { if (value == null) return true; string inputString = (string)value; if (inputString.Contains(InputString)) { return false; } return true; } }
为viewmodel添加特性
public class TestModel { [Required] [Display(Name = "用户名")] public string UserName { get; set; } [Required] [DataType(DataType.Password)] [Display(Name = "密码")] public string Password { get; set; } [Display(Name = "爱好")] [NotDefaultValue(InputString = "1")]/*如果用户选择为1,则验证不通过*/ public IEnumerable<SelectListItem> Liker { get; set; } }
在前面添加相对应的JS代码,建议将自定义的JS库放在一个单独的文件里,这样扩展性更强一些。
$.validator.addMethod('notdefaultvalue', function (value, element, param) { if (value == false) { return true; } if (value.indexOf(param) != -1) { return false; } else { return true; } }); $.validator.unobtrusive.adapters.addSingleVal('notdefaultvalue', 'inputstring');
OK,现在就可以运行我们的程序了,看看效果吧
怎么样,像这种扩展,我们还可以写很多,举一反三吧,呵呵!
0 0
- 为下拉列表框添加一个自定义验证规则
- C#中为DataGrid添加下拉列表框
- C#中为DataGrid添加下拉列表框
- C#中为DataGrid添加下拉列表框 WinForm
- C#中为DataGrid添加下拉列表框
- C#中为DataGrid添加下拉列表框
- C#中为DataGrid添加下拉列表框
- C#中为DataGrid添加下拉列表框
- javascript为下拉列表框动态添加数据方法
- C#WinForm为DataGrid添加下拉列表框
- DOM为列表框、下拉菜单添加、删除选项
- 从一个下拉列表往另一个下拉列表添加内容
- 为选择屏幕字段,添加下拉列表
- 怎样为EXCEL2010添加下拉列表
- javascript为下拉列表添加数据项
- Ajax动态为下拉列表添加数据
- DataGrid添加下拉列表框
- CMFCToolBar 添加下拉列表框
- UITableView普通的样式
- object sender, EventArgs e什么意思
- opencv-2图像扫描
- pull解析器解析xml
- 第15周项目2-用哈希法组织关键字
- 为下拉列表框添加一个自定义验证规则
- swift实际使用中遇到的问题及解决(2)
- OpenGL 基础第三方包配置
- Android相机启动加速
- React Native androd 错误`View` has no propType for native prop
- 高斯模糊的算法
- Huffman编码树
- laravel无法正确路由,开启Apache mod_rewrite模块
- Http协议介绍