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

微软发布的ASP.NET MVC2预览版引入了对DataAnnotation验证的支持,简化了模型和视图模型中的验证规则设置过程。开发人员可以通过声明方式在类属性上应用内置验证规则,如Required和StringLength等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 微软前日发布了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#特性之一 -- 自动属性来实现的)。

创建一个新的“Customer”视图模型类  

然后,我们可以使用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辅助方法显示给用户的,不用编写额外的代码就可以实现。

使用DataAnnotation特性指定的验证属性错误消息字符串  

在将来的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)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值