系列文章

ASP.NET MVC 3.0学习系列文章—序

ASP.NET MVC 3.0学习系列文章--Razor and ASP.NET MVC 3.0

ASP.NET MVC 3.0学习系列文章—Controllers in ASP.NET MVC 3.0

ASP.NET MVC
3.0学习系列文章--Dependency Resolution in ASP.NET MVC 3.0

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

1. Introduction:

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

http://www.cnblogs.com/serafin/archive/2011/01/25/1944848.html

我也会在这篇文章中稍微给大家介绍如何使用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部分我就不作说明了,文章够长了。。。。。

大家可以看看http://www.cnblogs.com/serafin/archive/2011/01/25/1944848.html 。

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

Nick

转载于:https://www.cnblogs.com/n-pei/archive/2011/01/26/1945018.html

ASP.NET MVC 3.0学习系列文章—Model in ASP.NET MVC 3.0相关推荐

  1. ASP.NET MVC 3.0学习系列文章--Razor and ASP.NET MVC 3.0

    系列文章 ASP.NET MVC 3.0学习系列文章-序 Razor and ASP.NET MVC 3.0 ASP.NET MVC 3.0学习系列文章-Controllers in ASP.NET ...

  2. ASP.NET MVC 3.0学习系列文章(开始学习MVC)

    Visual Studio 11安装ASP.NET MVC4体验 Nic Pei 2011-09-27 23:15 阅读:2891 评论:11   微软build大会.net平台大事汇总 Nic Pe ...

  3. ExtJs2.0学习系列--Ext.Panel

    ExtJs2.0学习系列--Ext.Panel 2008-06-29 12:59 上一篇文章ExtJs2.0学习系列(1)--Ext.MessageBox ,受到了大家的褒贬不一,还是有的朋友提出好的 ...

  4. ExtJs2.0学习系列(6)--Ext.FormPanel之第三式(ComboBox篇)

    前言:说句实话,此extjs系列的文章在博客园中的热度不高,可能是学这玩意的人不多吧,但是我觉得有这么个系列的文章对于中国朋友非常有帮助!请大家支持! 上篇ExtJs2.0学习系列(5)--Ext.F ...

  5. ExtJs2.0学习系列(5)--Ext.FormPanel之第二式

    随笔- 71  文章- 10  评论- 1096  ExtJs2.0学习系列(5)--Ext.FormPanel之第二式 上篇中我们简单的谈到了FormPanel中的fieldset和ComboBox ...

  6. ExtJs2.0学习系列(4)--Ext.FormPanel之第一式

    随笔- 71  文章- 10  评论- 1096  ExtJs2.0学习系列(4)--Ext.FormPanel之第一式 上篇中我们讨论了Ext.window的简单使用,今天我们要看看强大的FormP ...

  7. ExtJs2.0学习系列(3)--Ext.Window

    ExtJs2.0学习系列(3)--Ext.Window 前言:关于extjs,为了照顾还没有入门的新手,我给一点提示,有一个网站浪曦视频在线里面请了个老师录制了extjs的介绍入门的视频,环境可能不同 ...

  8. ExtJs2.0学习系列(2)--Ext.Panel

    随笔- 71  文章- 10  评论- 1096  ExtJs2.0学习系列(2)--Ext.Panel 上一篇文章ExtJs2.0学习系列(1)--Ext.MessageBox ,受到了大家的褒贬不 ...

  9. ExtJs2.0学习系列(1)--Ext.MessageBox

    随笔- 71  文章- 10  评论- 1096  ExtJs2.0学习系列(1)--Ext.MessageBox 大家都知道,刚开始搞extjs的时候,很是有点困难,所以本人在新手刚入门后准备了这个 ...

最新文章

  1. Python自然语言处理学习笔记(7):1.5 自动理解自然语言
  2. Wait--查看等待
  3. 【Android 应用开发】Paint 滤镜原理 之 颜色矩阵 ( 颜色模式 | 颜色通道 | 颜色矩阵 | 矩阵运算 | 矩阵乘法 | 矩阵加法 | 颜色矩阵深入解析 )
  4. JavaScript高级程序设计(第3版)非扫描版
  5. 100c之31:哥德巴赫猜想
  6. SQL读取树型所有下级或所有上级
  7. es6 Set 结合 Array.from 用法
  8. QT的QShortcut类的使用
  9. Java 使用枚举类的实例
  10. 向MIP开源项目提交Issues
  11. 西安工程大学c语言试卷,知到_大学应用写作_单元测试答案知到C语言程序设计(西安工程大学)见面课答案...
  12. JS控制CSS样式语法对照
  13. 搭建SSM框架的配置文件
  14. 复旦大学:专硕没住宿?我们帮你建!还给补助!
  15. 绝妙:永不过期的刷Q币技巧 - bh
  16. Mysql数据库开启远程连接
  17. 华东理工某ACMer总结
  18. 股票交易接口dll有什么优势呢?
  19. HTML CSS大学生期末网页大作业 DW个人网页设计 人物介绍 历史人物岳飞介绍
  20. java实现二十四节气计算

热门文章

  1. MySQL忘记root密码不重启mysqld的方法
  2. 微信开发直接访问本地调试
  3. 使用fprintf()函数格式化输出至磁盘文件和是stdout
  4. myeclips/eclipse配置总结(根据网络整理)
  5. Python学习入门基础教程(learning Python)--1.4 Python数据处理基础 .
  6. 基于.net3.5以上XML操作.
  7. hive 字符串前有 ’ 符号
  8. PostgreSQL的那点事儿
  9. Realm数据库存储 使用详解
  10. 阿里云RDS的mysql数据库占用空间超过90%的处理