您的位置:首页 > 编程语言 > ASP

Scott Gu教你使用ASP.NET MVC 2新功能(2)

2009-12-02 14:55 197 查看
微软前日发布了ASP.NET MVC 2的第一个公开预览版。在这篇博文中,.NET开发总管Scott Gu将详细介绍应该如何使用其中的新功能。

DataAnnotation(数据标记)验证支持

ASP.NET MVC 2现在包含了对最先在.NET 3.5
SP1中发布的DataAnnotation验证的内置支持,这个东西是在ASP.NET动态数据和.NET
RIA服务中使用的。DataAnnotation提供了一个简易的方式,可以声明的方式在应用中的Model(模型)和ViewModel(视图模型)
类中添加验证规则,在ASP.NET MVC中有自动的绑定和UI辅助方法验证支持。

要看该特性如何在实际中使用,我们可以象下面这样创建一个新的“Customer” 视图模型类,内含5个属性(是用了C#特性之一 -- 自动属性来实现的)。



然后,我们可以使用System.ComponentModel.DataAnnotations命名空间下的DataAnnotation特性,
在这些属性上饰于适当的验证规则。下面的代码使用了4种不同的内置验证规则: Required], [StringLength],
[Range], 和 [RegularExpression]。该命名空间下还包括一个基类,ValidationAttribute,
你可以继承来创建你自己的定制验证特性。



然后,我们可以创建一个CustomersController类,其中有2个 Create action方法。第一个 Create
action方法处理对应于“/Customers/Create” URL的HTTP
GET请求,基于一个空白的Customer对象显示一个视图模板。第二个 Create action方法则处理同个URL的HTTP
POST请求,并接受一个Customer对象作为方法参数。它会检查提交的输入数据是否造成了任何模型绑定错误,如果造成了错误的话,它会使用已经输入
的数据重新显示视图模板,如果没错误的话,它会给用户显示一个提交成功了的视图:



最后,我们可以在上面任意一个Create action方法中右击,选择
“添加视图”上下文菜单命令,自动地生成(scaffold)一个基于Customer对象的“Create”视图模板的框架。这么做的话,生成的框架视
图模板会包含下面这样一个HTML < form>:



这样,当我们在浏览器中请求“/Customers/Create” URL时,我们会得到象下面这样起始的空白表单:



如果我们输入不合法的数据,提交到服务器时,ASP.NET MVC
2模型绑定器会检测到我们的Customer类上有DataAnnotations特性,会自动地使用它们对提交的表单输入数据进行验证。如果有错误的
话,我们的控制器action方法会重新显示表单,并且给用户显示适当的验证错误消息,象下面这样。注意我们使用DataAnnotation特性指定的
验证属性错误消息字符串是如何通过Html.Validation辅助方法显示给用户的,不用编写额外的代码就可以实现。



在将来的ASP.NET MVC
2预览版中,我们计划将jQuery验证插件作为默认项目模板的一部分来发布,同时添加DataAnnotation验证规则在客户端
JavaScript中自动强制执行的支持。这将允许开发人员轻松地在一个地方,Model或ViewModel对象上,添加验证规则,然后无论对象用在
应用中的什么地方,这些规则都会同时在客户端和服务器端强制执行。

如果你不希望直接标记你的模型或视图模型类,你还可以创建一个伴随你的模型类的“伙伴类(buddy
class)”,另外封装DataAnnotaton规则。这个功能还在这样一些场景下有用:
VS直接生成/更新类的属性代码,你无法简易地在生成的代码上饰以特性(例如,由LINQ to SQL 或 LINQ to
Entities设计器生成的类)。

除了提供对DataAnnotations的内置支持外,ASP.NET MVC
V2中的DefaultModelBinder类现在还有新的虚拟方法,可以在子类中覆盖,来轻松地集成其他的验证框架( 例如Castle
Validator, EntLib Validation等等)。ASP.NET
MVC中的验证UI辅助方法是设计来支持任何类型的验证框架的(它们不用知道DataAnnotations)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: