博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC 3.0学习系列文章—Model in ASP.NET MVC 3.0
阅读量:6543 次
发布时间:2019-06-24

本文共 1787 字,大约阅读时间需要 5 分钟。

系列文章

 

 

这篇文章主要介绍如下基本分内容:

  

1. Introduction:

在ASP.NET MVC 3.0中, Model模块主要是在Validation这部分有很大的增强。包括ASP.NET MVC开发团队自己写的使用jQuery来进行客户端验证的jquery.validate.unobtrusive.js,以及Remote validation等。刚才在园子看到一个同学写了一篇文章介绍了Remote validation,写的挺详细的,大家可以看看。

我也会在这篇文章中稍微给大家介绍如何使用remote 验证。

总的来说ASP.NET MVC 3.0中的Validation主要的改动有如下三个方面:

a.New attributes b. New interfaces, c. Improved client validation story.

 

2. Validation in MVC 3

在验证方面分为如下几部分:

  

3.Data Annotations

微软的的System.ComponentModel.DataAnnotations就是一个好的验证方法集合。

你可以看看它主要包含的类:

从它包含的这些方法中可以看出它主要是用来做字段的验证。在ASP.NET MVC或者是Silverlight中微软都是使用它来做数据的合法性验证。当然,在ASP.NET MVC 3.0中结合jQuery的客户端验证,使Data Annotation发挥的功能更加完美。

  

4.Custom Validation Attributes

在上面的System.ComponentModel.DataAnnotations命名空间中,有ValidationAttibute这个类,所有的attribute类型的验证方法所在的类都继承了它。

比如:

上图中的Required和StringLength,我们看看它们的所在的类:

这么看来我们可以自定义Validation类,它也继承ValidationAttribute。

自定义类的结构如下:

  

我们现在自定义一个验证,来验证输入的时间是否是在合法的范围呢。

当你输入的时间不是在当前月的前6各月内或者是大于当前时间7天,就给出提示信息。

 

5.Self Validation models

这种方式是在model中来结合 ValidationContext和ValidationResult来提供验证。

 

例如我们的model中有一个startdate和一个enddate字段,要求输入的enddate不能小于startdate,那么我们可以使用Self validation model这种验证模式:

运行结果:

 

 

上面两种验证方式都是需要整个Form提交数据时post数据,大家估计都不可能接受,所以ASP.NET MVC团队在ASP.NET MVC 3中添加了下面两种验证方式,

Client Validation和Remote Validation。

 

6.Client Validation:

明眼人都会发现,Microsoft这几年和jQuery团队走的很近,ASP.NET MVC项目中更是使用了jQuery来实现客户端验证。

很欣慰的是微软终于放弃了之前自己的AJAX库。。。。。

在使用jQuery的AJAX认证,需要注意如下几点:

1.Web.Config中添加设置:

 

2.添加js文件:

3.在Html.FormBegain之前添加:

 

我这里有个例子,大家可以看看使用jquery.validate.unobtrusive.mis.js后,客户端生成的html有什么区别:

本身html的节点中就有了验证信息。

 

7.Custom Client Validation

ASP.NET MVC团队提供的这个客户端验证方式也是个扩展性非常强的。

 

例子如下:

 

8.remote validation:

remote validation部分我就不作说明了,文章够长了。。。。。Smile

大家可以看看

我个人觉得这个remote validation的原理就是实时向某个Action Post数据,然后再看返回结果是否为空,不为空就显示Validation Message。主要还是使用了jQUery的ajax。

 

Nick

转载地址:http://vvodo.baihongyu.com/

你可能感兴趣的文章
线性选择算法
查看>>
Unicode 5.0.0
查看>>
算法导论第二章 习题作业记录
查看>>
Javascript:必须知道的Javascript知识点
查看>>
是不是服务器配置越牛X重启时间就越短?
查看>>
Android手机无法使用debug解决方法
查看>>
电脑快捷键
查看>>
oracle 11g jdbc jar包在哪个文件目录
查看>>
新款macbook安装 和 驱动Boot Camp
查看>>
大于2GB的Listener.log和运行超过198天的主机上的Oracle实例
查看>>
异常:HRESULT: 0x80070057 (E_INVALIDARG)解决方案
查看>>
php常用函数
查看>>
参数化查询为什么能够防止SQL注入
查看>>
Google Protocol Buffers 概述
查看>>
GUID-1
查看>>
跨域共享Cookie ,单点登录,二级域名登录共享
查看>>
FusionCharts的使用方法
查看>>
从文件或摄像机读
查看>>
批量修改Project视图中Prefab的名字
查看>>
requestAnimationFrame,Web中写动画的另一种选择
查看>>