Asp.net MVC源码分析--Model Validation(Client端)实现(2)

来源:未知 责任编辑:责任编辑 发表时间:2013-11-26 22:14 点击:

上一篇我们介绍了如果输出Client Validation 信息到浏览器,下面我们来分析一个MVC是如果实现JavaScript验证的。
一.TextFor 输出的Html文本
先来看一下标记了[Required] attribute的属性通过TextFor输出的Html代码:
<input data-val="true" data-val-required="The User name field is required." id="UserName" name="UserName" type="text" value="" class="valid">
复制代码
• data-val:是否需要客户端验证
• data-val-required:验证类型和错误消息
二.jquery.validate.unobtrusive.js的实现
1.unobtrusive 自定义验证规则
1 var $jQval = $.validator,
2          adapters,
3         data_validation = "unobtrusiveValidation";
复制代码
我们看到$jQval对象其实就是$.validator对象。
 1 $jQval.unobtrusive = {
 2  adapters: [],
 3 
 4  adapters = $jQval.unobtrusive.adapters;
 5    adapters.add = function (adapterName, params, fn) {
 6           if (!fn) {  // Called with no params, just a function
 7               fn = params;
 8               params = [];
 9           }
10           this.push({ name: adapterName, params: params, adapt: fn });
11           return this;
12       };
13  
14    adapters.add("required", function (options) {
15                 if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") {
16               setValidationValues(options, "required", true);
17           }
18       });
19  }
复制代码
上面代码第10行,我们看到unobtrusive把所有与MVC相关的验证规则都放到了$jQval.unobtrusive.adapters(Array)对象中. 那么这些验证规则如果被Jquery调用的呢?我们接着来看.
2.用Adapter模式与Jquery集成
下面我们看一下jquery.validate.unobtrusive.js的实现,当初始化时调用了$jQval.unobtrusive.parse方法请注意上面第42行,unobtrusive只对data-val设置为true的input控件进行验证 。
 1 $(function () {
 2          $jQval.unobtrusive.parse(document);
 3      });
 4 
 5    function validationInfo(form) {

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 浅析.NET下XML数据访问新机制
  • asp.net 面试+笔试题目第1/2页
  • C# 邮件地址是否合法的验证
  • asp.net 设置GridView的选中行的实现代码
  • C#高级编程:数据库连接[1]
  • 经典C++程序1
  • IIS 自动回收导致后台定时器失效的问题解决
  • ASP.NET&#160;GridView列表代码示例
  • Asp.net MVC源码分析--Action Filter的链式调用
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1