利用模型实现服务器验证_ASP.NET MVC程序设计教程(第3版)_[共4页]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
当操作员单击【提交】按钮后,如果客户端验证失败,它就会自动显示对应的错误提示
信息,而且不会将数据提交到服务器,只有客户端验证成功后才会向服务器提交。
4.自定义客户端验证规则
jQuery Validate除了内置的验证规则外,还允许开发人员自定义客户端验证规则。
这是
通过jQuery提供的addMethod方法来实现的,语法为:
jQuery.validator.addMethod("name",function,message)
参数中的name为验证规则的名称,function为自定义的验证规则,message为验证失败
时显示的错误提示信息。
例如:
jQuery.validator.addMethod(
"CharNum", function(value, element) {
return this.optional(element) || (/^([a-zA-Z0-9]+)$/.test(value));
},
"只能输入英文字母或数字。
");
这段代码利用自定义的正则表达式实现客户端验证(只允许英文字母和数字)。
由于正
则表达式的用法已经超出了本书介绍的范围,因此不再对其进行过多介绍。
3.3.4 利用模型实现服务器验证
由于 MVC内置了jQuery客户端验证,因此也可以在模型类中声明这些验证规则,从而实现客户端和服务器双重验证的功能。
1.进行服务器验证的必要性
既然直接用jQuery Validate实现客户端验证就能确保输入数据的合法性,为什么还要进
行服务器验证呢?这是因为客户端验证仅仅实现了获取用户输入信息的第一个防护层,而服
务器验证则是为了实现第二个防护层。
具体来说,服务器验证除了可防止黑客绕过客户端验
证而直接提交数据到服务器以外,还能防止黑客利用无限循环不停地提交请求去攻击或瘫痪
服务器。
2.在模型类中利用C#特性声明客户端和服务器验证规则
在 MVC中,服务器验证规则是在模型类中利用C#特性来声明的。
这样做的好
处是:不论是否进行客户端验证,服务器验证始终都会执行。
3.如何判断服务器验证是否成功
在模型类中利用C#特性声明验证规则后,进行服务器验证时,只需要在控制器的操作方
法中判断ModelState对象的IsValid属性返回结果是true还是false即可,该属性返回true表
示服务器验证成功,返回false表示服务器验证失败,例如:
if(this.ModelState.IsValid)
{
......//验证成功时执行的代码
}
当返回false时,它会自动在页面中显示验证的错误信息。
另外,即使服务器验证成功,操作数据库数据时还可能会出现新的错误,介绍数据库操
作时,我们再说明这种情况的解决办法。
4.示例
下面通过例子说明服务器验证的具体用法。
【例3-14】演示服务器验证的基本用法,运行效果如图3-18所示。
91。