最近在学习asp.netMVC,发现其中的验证方式书写方便快捷,应用简单,易学好懂。

验证方式基于jQuery的validate 验证方式,也可以说是对jQuery validate的验证方式的扩展,使其更简单易用。

应用

一、引入 <script src="Scripts/jquery-1.7.1.min.js"></script>

   <script src="Scripts/jquery.validate.js"></script>

  <script src="Scripts/jquery.validate.unobtrusive.js"></script>

二、1)在需要验证的input标签上添加属性data-val="true",即表示改标签参加验证。

  2)继续在标签上添加属性data-val-required="用户名不能为空!",表示此标签的内容不能为空的验证。

三、显示验证信息,有两种方式显示。一种是集中显示验证信息,另一种是在具体位置显示相对应的验证信息。

  1)在需要显示验证信息的位置写入以下代码

   <div class="validation-summary-valid" data-valmsg summary="true">
<ul>
<li style="display: none"></li>
</ul>
</div>

  2)相对应的验证信息显示

   <input type="text"  name="cus" id="cus" data-val="true" data-val-required="用户名不能为空!" /> <span data-valmsg-for="cus" data-valmsg-replace="true"></span>

以上三部即可完成最基本简单的验证。

如需添加标签的其他验证只需重复第二部即可。

验证规则

一、简单规则

  刚才我们知道了data-val-required是必输字段,简单的验证规则如下

  1.data-val-required 必输字段 
  2.data-val-email 必须输入正确格式的电子邮件
  3.data-val-url 必须输入正确格式的网址
  4.data-val-date 必须输入正确格式的日期
  5.data-val-digits: 必须输入正整数
  6.data-val-number:必须输入整数

二、复杂一点的规则

  我们知道了简单基本的验证规则,但这些不能满足我们的需求。

  1.比如注册确认密码的验证
   (data-val-equalto="密码和确认密码不匹配。" data-val-equalto-other="pwd")
  这时只设置一个属性不能满足我们的需求。因为我们要找到另一个文本框的值。data-val-equalto-other对应另一个文本框的name的值

  <div class="control-group">
<label class="control-label">
*密码
</label>
   <div class="controls">
<input type="password" name="pwd" id="pwd" data-val="true" data-val-required="密码不能为空!" />
<span data-valmsg-for="pwd" data-valmsg-replace="true"></span>
</div>
</div>
<div class="control-group">
<label class="control-label">
*确认密码
</label>
<div class="controls">
<input type="password" name="Password1" id="Password1" data-val="true" data-val-required="确认密码不能为空!" data-val-equalto="密码和确认密码不匹配。" data-val-equalto-other="pwd" />
<span data-valmsg-for="Password1" data-valmsg-replace="true"></span>
</div>
</div>

  2.data-val-length 字符的长度 ,data-val-length-max表示最大字符数 data-val-length-min 表示最小字符数

 <div class="control-group">
<label class="control-label">
*密码
</label>
<div class="controls">
<input type="password" name="pwd" id="pwd" data-val="true" data-val-required="密码不能为空!" data-val-length-max="" data-val-length-min="" data-val-length="密码必须至少包含 6 个字符。" />
<span data-valmsg-for="pwd" data-valmsg-replace="true"></span>
</div>
</div>

  3.data-val-accept 正确的后缀名,data-val-accept-exts 符合后缀名的集合
  data-val="true" data-val-required="不能为空!" data-val-accept="后缀名为.jpg、.gif或.png" data-val-accept-exts="jpg|gif|png"

  4.data-val-range 数字的大小范围,data-val-range-min 最小数 data-val-range-max 最大数

三、再复杂一点的规则(正则)

  以上的验证规则需要两个或者两个以上的属性才能完成验证,但是这些仍然不能满足我们的需求。比如手机格式的验证,这些我们可能需要正则来辅助我们验证

  data-val-regex表示正则的验证方式,data-val-regex-pattern正则的表达式

   <div class="controls">
<input type="text" id="regex" name="regex" data-val="true" data-val-required="不能为空!" data-val-regex="手机格式不正确" data-val-regex-pattern="(13[0-9]|15[012356789]|18[0236789]|14[57])[0-9]{8}" />
<span data-valmsg-for="regex" data-valmsg-replace="true"></span>
</div>

四、再再复杂一点的规则(ajax)

  有点时候我们需要ajax来验证规则,比如我们常见的检查用户名是否可用

  data-val-remote可以帮助我们实现功能,data-val-remote-url表示ajax验证的路径,直接返回true or false 即可完成验证。

  <div class="controls">
<input type="text" name="loginName" data-val="true" data-val-required="登录名不能为空!" data-val-remote="已经被注册,请选择其他登录名称!" data-val-remote-url="checkuserid.aspx" />
<span data-valmsg-for="loginName" data-valmsg-replace="true"></span>
</div>

五、终极验证规则(自定义验证规则)

  虽然以上验证规则足够可以我们使用,但是可能需要我们自定义的验证规则。
  熟悉jQuery validate的验证方式知道可以添加自定义的验证规则,因为此验证规则是对jQuery validate的扩展,所以需要在jQuery validate的基础上进行自定义验证。

  1)添加jQuery validate自定义验证方法

  判断值是否等于“123”

  $.validator.addMethod('notequal', function (value, element, params)
  {
return value != "";
  });

  2)添加扩展方法的自定义方法

  $.validator.unobtrusive.adapters.add("notequal", function (options)
{
options.rules["notequal"] = { };
options.messages["notequal"] = options.message;
});

  3)data-val-notequal="姓名不能等于 123"

  

   <input type="text" value="" name="cus" id="cus" data-val="true" data-val-notequal="姓名不能等于 123"/>
<span data-valmsg-for="cus" data-valmsg-replace="true"></span>

  这样即可完成简单的自定义验证规则。

  有的时候我们需要指定参数来实现自定义验证规则

  

  $.validator.addMethod('notequal', function (value, element, params)
{
return value != params["va"];
}); $.validator.unobtrusive.adapters.add("notequal", ["va"], function (options)
{
options.rules["notequal"] = {
va: options.params.va
};
options.messages["notequal"] = options.message;
});
    <input type="text" value="" name="cus" id="cus" data-val="true" data-val-notequal="姓名不能够等于 123" data-val-notequal-va=""/>
<span data-valmsg-for="cus" data-valmsg-replace="true"></span>

这样就可以完成比较复杂的自定义验证规则。

用jquery验证是否通过可以

$("#form-invoince").valid()

本人第一次写博客,希望多多支持!!

文件下载

jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证方式(jquery.validate.unobtrusive.js)的更多相关文章

  1. asp.net mvc源码分析-ModelValidatorProviders 客户端的验证

    几年写过asp.net mvc源码分析-ModelValidatorProviders 当时主要是考虑mvc的流程对,客户端的验证也只是简单的提及了一下,现在我们来仔细看一下客户端的验证. 如图所示, ...

  2. 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截

    程序猿修仙之路--数据结构之你是否真的懂数组?   数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构  .要想在之后的江湖历练中通关,数据结构必不可少. ...

  3. asp.net mvc 中 一种简单的 URL 重写

    asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...

  4. 10、ASP.NET MVC入门到精通——Model(模型)和验证

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 模型就是处理业务,想要保存.创建.更新.删除的对象. 注解(通过特性实现) DisplayName Required StringLengt ...

  5. ASP.NET MVC 使用Remote特性实现远程属性验证

    RemoteAttribute是asp.net mvc 的一个验证特性,它位于System.Web.Mvc命名空间 下面通过例子来说明 很多系统中都有会员这个功能,会员在前台注册时,用户名不能与现有的 ...

  6. ASP.NET MVC 入门8、ModelState与数据验证

    原帖地址:http://www.cnblogs.com/QLeelulu/archive/2008/10/08/1305962.html ViewData有一个ModelState的属性,这是一个类型 ...

  7. [转]ASP.NET MVC 入门8、ModelState与数据验证

    ViewData有一个ModelState的属性,这是一个类型为ModelStateDictionary的ModelState类型的字典集合.在进行数据验证的时候这个属性是比较有用的.在使用Html. ...

  8. ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项

    引言: 本人想自己个博客网站出来,技术路线是用ASN.NET MVC5+EF6(Code First)+ZUI+各种Jquery插件,有了这个想法之后就开始选择UI,看了好多bootstrap的模板之 ...

  9. jQuery Grid With ASP.Net MVC

    jQuery Grid 能够在 ASP.NET MVC 中轻松地实现分页. 排序. 筛选以及 jQuery 插件网格中的 CRUD 操作. 具有以下特征: 时尚的表格数据呈现控件. JavaScrip ...

随机推荐

  1. Python装饰器详解

    python中的装饰器是一个用得非常多的东西,我们可以把一些特定的方法.通用的方法写成一个个装饰器,这就为调用这些方法提供一个非常大的便利,如此提高我们代码的可读性以及简洁性,以及可扩展性. 在学习p ...

  2. css text-align-last设置末尾文本对齐方式

    text-align-last:auto | start | end | left | right | center | justify auto: 无特殊对齐方式. left: 内容左对齐. cen ...

  3. SQL Pass北京举办1周年活动(本次活动特别邀请到了来自微软的SQL Server大师何雷谈数据库职业规划)

    地点:北京微软(中国)有限公司[望京利星行],三层308室 时间:2013年 12 月28日 13:30-16:30 SQL PASS 北京QQ群号:2435349 新浪微群地址:http://q.w ...

  4. 仿SGI STL的traits技法

    首先是iterator traits,这个是用来萃取迭代器的特性的 #ifndef _STL_ITERATOR_H_ #define _STL_ITERATOR_H_ #include <cst ...

  5. 【.Net底层剖析】3.用IL来理解属性

    .Net底层剖析目录章节 1.[深入浅出.Net IL]1.一个For循环引发的IL 2.[.Net底层剖析]2.stfld指令-给对象的字段赋值 3.[.Net底层剖析]3.用IL来理解属性 未完待 ...

  6. Java Management extentsions(jmx)与tomcat

    1,概念:一个可以使用JMX管理器来管理的Java对象称为JMX管理资源(JMX manageable resource).事实上,一个JMX管理资源也可以是一个应用程序.一个实现或者一个服务.设备. ...

  7. vs切换当前编辑文件时自动定位目录树

    在编辑区,切换当前编辑文件时(单击.cpp或.h文件选项卡),"解决方案资源管理器"目录树会自动定位当前编辑的文件,并以灰色标识,当一个解决方案中的工程数目数目很多,每个工程下面又 ...

  8. Django--models一对多

    一对多--foreignkey 应用场景 当一张表中创建一行数据时,有一个单选的下拉框(可以被重复选择) 例如:创建用户信息时候,需要选择一个用户类型[普通用户][金牌用户][铂金用户]等. 创建表 ...

  9. 三、BLE(上)

    1.      BLE 1.1       模块构成与结构体层次关系 如上图所示,BLE模块有独立的application layer,这是因为该模块可以直接从BlueCore接收数据(通过GATT模 ...

  10. Html5离线缓存详细讲解

    离线缓存是Html5新特性之一,简单理解就是第一次加载后将数据缓存,在没有清除缓存前提下,下一次没有网络也可以加载,用在静态数据的网页或游戏比较好用.当然,Html5新的特性都不是所有浏览器都能支持的 ...