Asp.net MVC 通过Attribute验证datamodel(二) ---使用IClientValidatable
来源:互联网 发布:吉利知豆3 编辑:程序博客网 时间:2024/05/21 11:05
上一篇文章实现的都是服务器端的验证,ASP.net MVC框架给我们提供了非常好的客户端验证机制。下面来修改一下上面的Attribute定义,使其实现IClientValidatable接口
//验证逻辑就是判断专辑的Title是否包含某一个关键字 public class AlbumTitleValidateAttribute : ValidationAttribute,IClientValidatable { private readonly string _keyword; public AlbumTitleValidateAttribute(string keyword) { if (string.IsNullOrEmpty(keyword)) throw new Exception("invalid usage"); _keyword = keyword; } protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if (value != null && value.ToString().ToUpper().Contains(_keyword.ToUpper())) { return ValidationResult.Success; } else return new ValidationResult(string.Format("Title does not contain the keyword({0})", _keyword)); } public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { ModelClientValidationRule rule = new ModelClientValidationRule { ValidationType = "albumtitlecontains", ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()) }; rule.ValidationParameters["inputstring"] = _keyword; yield return rule; } }
前台需要使用这两句话来注册验证方法
$.validator.addMethod("albumtitlecontains", function (value, element, param) { if (value.indexOf(param) < 0) { return false; } else { return true; } }); $.validator.unobtrusive.adapters.addSingleVal("albumtitlecontains", "inputstring");
inputstring代表参数要跟rule.ValidationParameters["inputstring"] = _keyword;的名字一致,并且是要小写
albumtitlecontains验证器的名称要跟ValidationType一致,并且是要小写
在使用这些之前,必须保证
1.添加所有的js引用
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
2.Web.config的客户端验证为打开状态
<appSettings> <add key="ClientValidationEnabled" value="true"/> <add key="UnobtrusiveJavaScriptEnabled" value="true"/> </appSettings>
- Asp.net MVC 通过Attribute验证datamodel(二) ---使用IClientValidatable
- Asp.net MVC 通过Attribute验证datamodel(一)
- MVC学习十一:浅谈在ASP.NET MVC3中使用IClientValidatable接口实现客户端和服务器端同时验证
- ASP.NET MVC3中使用IClientValidatable接口实现客户端和服务器端同时验证
- 浅谈在ASP.NET MVC3中使用IClientValidatable接口实现客户端和服务器端同时验证
- MVC 3 自定义验证 ValidationAttribute, IClientValidatable
- ASP.NET MVC Model验证(二)
- ASP.NET MVC 4 Attribute特性
- ASP.NET MVC中使用Nhibernate(二)
- ASP.NET MVC 2博客系列之二:模型验证
- ASP.NET MVC 2博客系列之二:模型验证
- Asp.net MVC学习日记二(登陆验证)
- asp.net MVC 二 通过ViewData.Model传值
- Attribute(二)——自定义特性+Asp.net MVC中的filter详解
- Attribute(二)——自定义特性+Asp.net MVC中的filter详解
- 二. ASP NET MVC
- ASP.NET MVC中的验证
- ASP. net MVC 验证码
- linux释放内存脚本,解决ubuntu老是死机问题
- android的ui设计
- Apache Commons-logging+log4j配置
- Android布局之屏幕自适应
- QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数
- Asp.net MVC 通过Attribute验证datamodel(二) ---使用IClientValidatable
- 求数组中第二大的数
- 掌握HTML5中的多媒体--音频(audio)
- Query获取Select选择的Text和Value:
- TestNG和jmockit结合使用
- QT源码解析(四)剖析Qt的事件机制原理
- Sequences hoj 单调队列优化DP
- TimesTen常用命令整理
- Axis,axis2,Xfire以及cxf对比