第六章 数据验证_第1页
第六章 数据验证_第2页
第六章 数据验证_第3页
第六章 数据验证_第4页
第六章 数据验证_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ASP.NETMVC程序开发第六章数据验证第六章数据验证ASP.NETMVC程序开发第

2页6.1MVC数据验证概述6.2验证属性的使用6.3自定义验证6.4扩充基于EntityFramework的数据模型小结6.1MVC数据验证概述ASP.NETMVC程序开发第

3页原因:ASP.NETMVC中视图(View)负责向用户呈现操作界面、收集数据并传回服务器。在用户使用过程中,由于用户疏忽或恶意原因,用户输入数据对系统可能存在各种隐患,因此需要对从用户界面收集的数据进行各种规则的验证,确保数据符合系统要求。6.1MVC数据验证概述ASP.NETMVC程序开发第

4页双重验证:Web应用程序必须对用户输入进行验证,不仅需要在客户端进行验证,在服务器端也需要进行验证。客户端进行验证会对用户向表单中输入的数据给出即时的反馈,提高用户体验;在服务器端进行用户输入验证除了服务器端验证可以实现更复杂的验证逻辑外,主要是由于来自网络的数据是不能信息的。6.1MVC数据验证概述ASP.NETMVC程序开发第

5页方案:用户输入数据的验证既包括逻辑验证,也需要实现用户友好的错误提示信息,当验证失败时,把提示信息显示到用户界面上,而且还需要提供从验证失败中恢复的机制。ASP.NETMVC进行验证最主要的是关注验证模型的值。ASP.NETMVC验证框架是可扩展的,可以采用开发人员想要的方式构建验证模式,默认的方法是声明式验证。6.1MVC数据验证概述ASP.NETMVC程序开发第

6页流程:6.1MVC数据验证概述ASP.NETMVC程序开发第

7页步骤:1.用户提交数据时在客户端浏览器中进行验证,验证操作包括:验证所有必须填写的内容是否已填写;验证数据的格式是否符合要求;如果可验,则验证数据的数据类型;如果发现有数据是无效的,则立即反馈如何修改无效数据为有效数据的信息给客户,但数据不提交给服务器,当用户修改所有数据符合验证要求后,用户才能把数据提交给服务器。6.1MVC数据验证概述ASP.NETMVC程序开发第

8页步骤:2.当所用客户端验证都通过后,数据被提交给服务器;3.在服务器端对数据按服务器的验证要求进行数据有效性验证,以保证数据符合业务规则的要求以及请求数据中不包含潜在的攻击。如果数据验证失败,则数据不会按业务流程进行处理而是会把验证的错误信息反馈回客户端,让用户进行必要的修改;4.当服务器端对数据有效性验证通过后,业务处理流程才继续进行,最终显示一个处理结果的View或下载文件等。6.2验证属性的使用ASP.NETMVC程序开发第

9页客户端方案:如果开发人员自行编写在客户端进行用户数据有效性验证的代码,则不仅工作繁琐,而且很可能会有各种漏洞,为此ASP.NETMVC提供了简单方便的方式提供用户输入数据有效性验证功能,主要通过对数据添加相应的属性,并在客户端配合对应的验证用JavaScript代码库。由于JavaScript代码库已由IDE在创建项目时提供,所以开发人员主要是在ViewModle中为各属性添加需要的各种属性以确定各属性必须满足的各种有效性验证要求。6.2验证属性的使用ASP.NETMVC程序开发第

10页示例:用户账号创建及管理的数据有效性验证6.2验证属性的使用ASP.NETMVC程序开发第

11页服务器端方案:当客户端的浏览器由于禁用了JavaScript脚本而无法进行有效性验证,直接把空数据提交给服务器,则服务器的注册功能实际执行的Action(即本示例对应AccountController中的Register(RegisterModelmodel)这一Action),通过应用ModelState.IsValid这一属性进行服务器端的有效性验证判断,自动应用ViewModel中各属性设定的验证规则进行了有效性验证,无效数据(空数据)不会被写入到系统中。6.2验证属性的使用ASP.NETMVC程序开发第

12页验证过程代码:ASP.NETMVC由三个部分代码完成了客户端和服务器端的用户输入数据有效性验证全过程,此三部分代码为:View中使用的强类型Model对应的类中各属性使用验证属性;View中引入对应的客户端验证用JQuery代码;服务器对应Action中使用ModelState.IsValid来判断用户输入数据的有效性。6.2验证属性的使用ASP.NETMVC程序开发第

13页自定义错误提示消息及其本地化:验证错误时显示的原始错误信息对于最终用户来说并不友好的错误提示消息,例如其中可能会有英文单词、计算机专业词汇等。为此,每个验证属性都允许传递一个带有自定义错误提示消息的参数,这一参数在上一小节示例的代码基础上,直接添加在原有参数的后面,并用英文的逗号分隔,参数名为ErrorMessage。6.2验证属性的使用ASP.NETMVC程序开发第

14页示例:自定义错误提示消息及其本地化6.3自定义验证ASP.NETMVC程序开发第

15页ASP.NETMVC框架具有良好的扩展性,可以实现自定义验证逻辑。一般自定义验证的实现方法主要为:将验证逻辑封装在自定义的验证属性中;将验证逻辑封装在模型对象中。把验证逻辑封装在自定义验证属性中可以轻松地实现在多个模型中重用验证逻辑;而将验证逻辑直接放入模型对象中,则可以较容易地编码实现,但这种方式不利于实现验证逻辑的重用。6.3自定义验证ASP.NETMVC程序开发第

16页自定义验证属性示例:限制用户电子邮箱地址的最大长度6.3自定义验证ASP.NETMVC程序开发第

17页IValidatableObject:将验证逻辑封装在模型对象中的方法也就是自验证模型技术,自验证模型主要是Model自身知道如何验证自身的模型对象。一个Model通过实现IValidatableObject接口来实现对自身的验证。6.3自定义验证ASP.NETMVC程序开发第

18页IValidatableObject示例:直接在Model中实现对ClientName长度的验证6.4扩充基于EntityFramework的数据模型ASP.NETMVC程序开发第

19页原因:随着模板和自动代码生成技术的应用,有许多应用中都通过各类工具生成一些类(如EntityFramework等各类ORM技术生成的基本数据模型中的类),但这些类可能难以满足全部的要求,所以需要扩充这些工具生成的数据模型类。在实际开发过程中,虽然可以通过手工修改工具生成的类来满足开发的要求,但一般情况下,不应用手工去修改工具生成的类,因为开发过程中很可能需要多次通过工具重新生成这些类,那么在重新生成时,这些类中手工修改的内容就会自动被清除。6.4扩充基于EntityFramework的数据模型ASP.NETMVC程序开发第

20页解决方案:利用部分类(PartialClass)的辅助机制来实现对EntityFramework生成类(也就是应用于系统的各Model类)的扩充;通过Metadata来实现对Model进行再定义;6.4扩充基于EntityFramework的数据模型ASP.NETMVC程序开发第

21页示例:应用partial扩展原有Model6.4扩充基于EntityFramework的数据模型ASP.NETMVC程序开发第

22页示例:定义Model的Metadata本章小结

ASP.NETMVC程序开发第

23页

本章内容主要是展示如果实现对进行数据进行验证的技术,由于MVC中主要通过Model实现数据的传递,所以主要也就是对Model进行相应的属性有效性验证。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论