AJax技术

ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器

字号+ 作者:H5之家 来源:H5之家 2017-03-28 09:11 我要评论( )

一、校验 mdash; 表单不是你想提想提就能提1.1 DataAnnotations(数据注解)位于 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据模型中的各

一、校验 — 表单不是你想提想提就能提 1.1 DataAnnotations(数据注解)

  位于 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据模型中的各个字段的验证。这些特性用于定义常见的验证模式,例如范围检查和必填字段。而 DataAnnotations 特性使 MVC 能够提供客户端和服务器验证检查,使你无需进行额外的编码来控制数据的有效。

  通过为模型类增加数据描述的 DataAnnotations ,我们可以容易地为应用程序增加验证的功能。DataAnnotations 允许我们描述希望应用在模型属性上的验证规则,ASP.NET MVC 将会使用这些 DataAnnotations ,然后将适当的验证信息返回给用户。

  在DataAnnotations为我们所提供的众多内置验证特性中,用的最多的其中的四个是:

  (0)[DisplayName]:显示名 – 定义表单字段的提示名称

  (1)[Required] :必须 – 表示这个属性是必须提供内容的字段

  (2)[StringLength]:字符串长度 – 定义字符串类型的属性的最大长度

  (3)[Range]:范围 – 为数字类型的属性提供最大值和最小值

  (4)[RegularExpression]:正则表达式 – 指定动态数据中的数据字段值必须与指定的正则表达式匹配 

1.2 使用DataAnnotations为Model进行校验

  假设我们的Model中有一个UserInfo的实体,其定义如下:

public class UserInfo { public int Id { get; set; } public string UserName { get; set; } public int Age { get; set; } }

  UserInfo的属性很简单,只有三个:Id,UserName和Age三个字段;现在我们可以为其增加验证特性,看看其为我们提供的强大的校验功能。

  (1)非空验证

  添加特性:

[Display(Name=)] [Required(ErrorMessage = )] public string UserName { get; set; }      [Display(Name = )] [Required(ErrorMessage = )] public int Age { get; set; }

  验证效果:

  (2)字符串长度验证

  添加特性:

[Display(Name=)] [Required(ErrorMessage = )] [StringLength()] public string UserName { get; set; }

  验证效果:

  (3)范围验证

  添加特性:

[Display(Name = )] [Required(ErrorMessage = )] [Range(18, 120)] public int Age { get; set; }

  验证效果:

  (4)正则表达式验证

  添加特性:验证用户输入的是否是数字,正则表达式匹配

[Display(Name = )] [Required(ErrorMessage = )] [Range(18, 120)] [RegularExpression(, ErrorMessage = )] public int Age { get; set; }

  验证效果:

  (5)浏览所生成的HTML代码

  从上图可以看出,我们在浏览器端的校验都是通过为html标签设置自定义属性来实现的,我们在Model中为其添加的各种校验特性,都会在客户端生成一个特定的属性,例如:data-val-length-max=“5”与data-val-length="*长度必须小于5"对应[StringLength(5, ErrorMessage = "*长度必须小于5")]。然后,通过jquery validate在客户端每次提交之前进行校验,如果校验匹配中有不符合规则的,则将message显示在一个特定的span标签(class="field-validation-valid")内,并阻止此次表单提交操作。

1.3 使用DataAnnotations的注意事项

  (1)首先,要确保需要进行校验的页面中引入了指定的几个js文件:

  当然,jquery库的js文件也是必须的,而且在上面这两个js之前引入;

  (2)在 Web.config 的appSettings中,已经默认支持了客户端验证(MVC3.0及更高版本中默认支持,MVC2.0则需要修改一下):

<!-- 是否启用全局客户端校验 --> <add key=value=/> <add key=value=/>

PS:Unobtrusive Javascript有三层含义:

一是在HTML代码中不会随意的插入Javsscript代码,只在标签中加一些额外的属性值,然后被引用的脚本文件识别和处理;

二是通过脚本文件所增加的功能是一种渐进式的增强,当客户端不支持或禁用了Javsscript时网页所提供的功能仍然能够实现,只是用户体验会降低;

三是能够兼容不同的浏览器。

二、ASP.Net MVC下的两种AJAX方式 2.1 使用JQuery AJAX方式

  首先,在ASP.Net MVC中使用此种方式跟普通的WebForm的开发方式是一致的,需要注意的是:Url地址不同->请求的是Controller下的Action,例如在WebForm中请求的url通常是/Ajax/UserHandler.ashx,而在MVC中请求的url通常为:/User/GetAll。

  例如,我们在一个View中添加一个按钮,用于使用AJAX获取一个服务器端的时间:

JQuery Ajax方式

  在Home控制器中增加一个用于返回时间的Action:

public ActionResult GetServerDate() {return Content(DateTime.Now.ToString()); }

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • ASP.NET WebForm使用Ajax

    ASP.NET WebForm使用Ajax

    2017-03-24 17:00

  • 《学习ASP.NET 2.0和AJAX》pdf书下载

    《学习ASP.NET 2.0和AJAX》pdf书下载

    2017-03-16 14:04

  • Asp.net中的AJAX学习记录之二 体会AJAX页面刷新的不同

    Asp.net中的AJAX学习记录之二 体会AJAX页面刷新的不同

    2017-03-12 18:03

  • ASP.NET AJAX学习记要(1)-如何下手

    ASP.NET AJAX学习记要(1)-如何下手

    2017-03-11 12:03

网友点评
<