第6章 数据验证2ppt课件.pptx
在此输入您的封面副标题LOGO第第6章章 数数据据验证验证ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程本章内容本章内容n6.1 MVC验证的概念n6.2 DataAnnotation验证n6.3 自定义验证ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程6.1 MVC验证的概念验证的概念对对用户输入的验证以及强制业务规则用户输入的验证以及强制业务规则/逻辑是大多数逻辑是大多数web应用的核心需应用的核心需求。求。ASP.NET MVC 包含包含了一堆新的特性,显著地简化了对用户输入了一堆新的特性,显著地简化了对用户输入的验证以及在模型的验证以及在模型/视图模型中对验证逻辑的强行实施。这些特性是这样视图模型中对验证逻辑的强行实施。这些特性是这样设计的,验证逻辑总是在服务器上执行的,也可以选择在客户端通过设计的,验证逻辑总是在服务器上执行的,也可以选择在客户端通过JavaScript来执行。来执行。ASP.NET MVC 中中的验证设施和特性这般设计,的验证设施和特性这般设计,以便:以便:1) 开发人员可以轻易地利用内置于开发人员可以轻易地利用内置于.NET框架中的框架中的DataAnnotation验证支持。验证支持。DataAnnotation提供了一个非常简便的方式,使用最少的提供了一个非常简便的方式,使用最少的代码在对象和属性上用声明的方式添加验证规则。代码在对象和属性上用声明的方式添加验证规则。2) 开发人员可以集成他们自己的验证引擎,或者利用现有的验证框架,开发人员可以集成他们自己的验证引擎,或者利用现有的验证框架,象象Castle验证器或验证器或EntLib验证库。验证库。ASP.NET MVC 的的验证特性是设计验证特性是设计来在利用新的来在利用新的 ASP.NET MVC 的的验证设施(包括客户端验证,模型绑验证设施(包括客户端验证,模型绑定验证等等)的同时,简化任何类型的验证架构的插入的。定验证等等)的同时,简化任何类型的验证架构的插入的。这意味着,在常见的应用场景中启用验证是极其容易的,同时对更高级这意味着,在常见的应用场景中启用验证是极其容易的,同时对更高级的场景则还能保持极好的灵活性。的场景则还能保持极好的灵活性。ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程6.2 DataAnnotation验证验证图3-6 添加视图页、分部页或布局页DRY原则原则在ASP.NET MVC中,有一条作为核心的原则,就是DRY(“Dont Repeat Yourself,中文意思为:不要让开发者重复做同样的事情)原则。ASP.NET MVC提倡让开发者“一处定义、处处可用”。这样可以减少开发者的代码编写量,同时也更加便于代码的维护。在模型中添加验证规则在模型中添加验证规则首先,让我们在Student类中追加一些验证规则。打开Student.cs文件,在文件的头部追加一条引用命名空间的using语句,代码如下所示:Using System.ComponentModel.DataAnnotations;这个命名空间是.NET Framework中的一个命名空间。它提供了很多内建的验证规则,你可以对任何类或属性显式指定这些验证规则。现在让我们来修改Student类,增加一些内建的Required(必须输入),StringLength(输入字符长度)与Range(输入范围)验证规则,当然,我们也可以自定义我们自己的验证规则,之后会说明如何创建自定义验证规则。ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程6.2 DataAnnotation验证验证public partial class Student public Student() this.Score = new HashSet(); public int stuId get; set; Required(ErrorMessage = 必须输入标题) public string stuName get; set; public string stuSex get; set; public System.DateTime stuBirthdate get; set; public System.DateTime stuStudydate get; set; ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程6.2 DataAnnotation验证验证StringLength(4, ErrorMessage = 只能输入4个字符) public string stuAddress get; set; Required(ErrorMessage = 必须输入标题) /正则验证 RegularExpression(w-+(.w-+)*w-+(.w-+)+$, ErrorMessage = 邮箱格式不正确) public string stuEmail get; set; RegularExpression(d11, ErrorMessage = 邮箱格式不正确) public string stuPhone get; set; public Nullable stuIsDel get; set; public Nullable stuInputtime get; set; public int classId get; set; public virtual Course Course get; set; public virtual ICollection Score get; set; ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程6.2 DataAnnotation验证验证上述这些验证属性指定了我们想要强加给模型中各属性的验证规则。Required属性表示必须要指定一个属性值,在上例中,一个有效的学生信息必须含有标题,地址,电话,邮箱。Range属性表示属性值必须在一段范围之间。StringLength属性表示一个字符串属性的最大长度或最短长度。ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程6.2 DataAnnotation验证验证Action中的代码中的代码:HttpPost public ActionResult Create(Student student) /ModelState.IsValid校验客户端数据是否全部符合验证规则 if (ModelState.IsValid) /获取dropdownlist选中的value值 string strClassID = Request.Formclass; int intId = Convert.ToInt32(strClassID); var course = from c in entity.Course where c.classId = intId select c; /处理外键关系 student.Course = course.FirstOrDefault(); entity.Student.Add(student); entity.SaveChanges(); return RedirectToAction(Index); ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程6.2 DataAnnotation验证验证 else /在不符合验证规则的时候,得重新绑定DropDownList数据源。 var courses = from s in entity.Course select s; List items = new List(); foreach (var item in courses) SelectListItem selectListItem = new SelectListItem() Text=item.className, Value=item.classId.ToString(); items.Add(selectListItem); ViewDataclass = items; return View(student); ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程6.2 DataAnnotation验证验证运行效果运行效果ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程6.3 自定义自定义验证规则验证规则如果前面的如果前面的验证规则,不能满足需要,可以自己定义验证验证规则,不能满足需要,可以自己定义验证规则,下面演示如何实现一个自己的验证规则规则,下面演示如何实现一个自己的验证规则。验证规则特性必须集成ValidationAttribute类,当然也可以继承该类的子类。(注意:对于特性约定以Attribute结尾)。 下面自定义一个验证类,实现默认值约束规则DefaultsAttribute,而实现最简单的方式就是自定义正则表达式的规则。 ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程6.3 自定义验证规则自定义验证规则定义的验证类的代码如下定义的验证类的代码如下:public class DefaultsAttribute : RegularExpressionAttribute public DefaultsAttribute(): base(mf) public override string FormatErrorMessage(string name) return 性别只能输入m(男)或者f(女); ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程为为Student类中的类中的stuSex加上特性。加上特性。Defaultspublic string stuSex get; set; 6.3 自定义验证规则自定义验证规则ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程测试一下,看看实现测试一下,看看实现效果效果6.3 自定义验证规则自定义验证规则ASP.NET5程序程序设计项设计项目目开发开发案例案例教教程程本章习题本章习题1简要说明数据验证的基本概念。简要说明数据验证的基本概念。2举例说明如何举例说明如何DataAnnotation实现数据验证。实现数据验证。3简要说明自定义验证的实现步骤。简要说明自定义验证的实现步骤。