打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ASP.NET MVC 3新特性全解析(2)

Model 验证的改进
DataAnnotations 元数据标签
ASP.NET MVC3 支持 DataAnnotations 元数据标签,例如:DisplayAttribute。

ValidationAttribute 类
在 .NET Framework4 中被改进 的ValidationAttribute 类支持新的 IsValid重载,提供关于当前验证上下文的更多信息,例如什么对象被验证了。这允许你基于 Model 的其他属性来验证当前值,例如,新的CompareAttribute 就允许你比较 Model 的两个属性的值,在下面的例子中,ComparePassword 属性必须匹配Password 字段来同通过验证。

  1. public class User   
  2. {   
  3. [Required]   
  4. public string Password { getset; }   
  5. [Required, Compare("Password")]   
  6. public string ComparePassword { getset; }   
  7. }  

验证接口
IValidatableObject 接口允许执行 Model 水平的验证,并且允许你提供整个模型状态的验证错误信息,或者基于Model 的两个属性。当 Model 绑定的时候,MVC3 从 IValidatableObject 接收错误信息,在视图中使用内建的HTML 助手时,将会自动标识或者高亮受影响的字段。

IClientValidatable 接口允许 ASP.NET MVC 在运行时发现支持的客户端验证器,这个接口被用来支持集成不同的验证框架。

更加关于验证接口的内容,参考 Scott Guthrie's MVC 3 Preview blog post 中 Model Validation Improvements 一节。

依赖注入Dependency Injection 的改进
ASP.NET MVC3 提供了更好的 DI 和 IoC 支持,在下面的地方支持 DI:

  • 控制器 (registering and injecting controller factories, injecting controllers).
  • 视图 (registering and injecting view engines, injecting dependencies into view pages).
  • Action 过滤器 (locating and injecting filters).
  • Model 绑定器 (registering and injecting).
  • Model 验证提供器 (registering and injecting).
  • Model 元数据提供器 (registering and injecting).
  • Value 提供器 (registering and injecting).

MVC3 支持 Common Service Locator 库和任何支持这个库的 IServiceLocator 接口的 DI 容器。也支持新的容易集成到 DI 框架的 IDependencyResolver 接口。

更多关于 DI 的信息,参考:

  • Brad Wilson's series of blog posts on Service Location
  • MVC 3 Release Notes

其他新特性

NuGet 集成
ASP.NET MVC3 自动安装和启用 NuGet ,NUGet是免费开源的一个包管理器,使得在你的项目中容易发现,安装,和使用 .NET 库。它可以和所有的 Visual Studio项目类型一起工作,包括 ASP.NET WebForm 和 MVC。

NuGet 允许开发者维护开源项目,例如,像 Moq 项目,NHibernate 等等,可以注册它们到一个在线的网站中。

更多信息参考:NuGet documentation on the CodePlex site.

部分页的输出缓存
ASP.NET MVC 从版本1 开始支持整页缓存,MVC3还提供了部分页缓存。这可以允许你容易地缓存输出的一个区域或者片断,更多地内容参考 Scott Guthrie's blog post onthe MVC 3 release candidate 中 Partial Page Output Caching 段落,还有 MVC 3Release Notes 中 Child Action Output Caching 段落。

在请求验证中的粒度控制
ASP.NET MVC 内建了请求验证机制来自动帮助处理类似跨站攻击和 HTML注入等等。实际上,有时你希望能够显式关闭请求的验证,例如你希望允许用户提交 HTML 内容,例如在内容管理系统中,现在你可以通过增加AllowHtml 标签到 Model 或者视图的 Model 来支持在绑定的时候基于一个属性关闭请求验证。更多地资料参考:

  • Scott Guthrie's blog post on the MVC 3 release candidate 中 Unobtrusive JavaScript and Validation 一节.
  • MVC 3 Release Notes

可扩展的新建项目对话框

在 MVC3 中,你可以增加项目模板,视图引擎,单元测试项目框架到新建项目对话框中。

脚手架的改进
MVC3 中的脚手架对于主键提供了更好的支持,例如,脚手架的模板不会将主键加入的编辑表单中了。

默认情况下,创建和编辑的脚手架现在使用 Html.EditorFor 助手来替代 Html.TextBoxFor 助手,这个改进在增加视图对话框生成一个视图的时候,支持模型中的元数据标签。

对于 Html.LabelFor 和 Html.LabelForModel 的新重载
对于 LabelFor 和 LabelForModel 增加了新的方法重载,允许指定或者重写 Label 文本。

无 Session 的控制器支持
MVC3 中可以指定控制器是否使用 Session 状态,进而,Session 是否是读写还是只读。

新的 AdditionalMetadataAttribute 类
可以通过 AdditionalMetadataAttribute 标签对 Model 的一个属性访问 ModelMetadata.AdditionalValues 字典,例如,如果模型的某个属性仅仅支持管理员显示,你可以如下设置:

  1. public class ProductViewModel   
  2. {   
  3. [AdditionalMetadata("AdminOnly"true)]   
  4. public string RefundCode {getset;}   
  5. }  

当使用产品的 Model 来生成的时候,这个元数据将被任何显示或者编辑模板使用,这允许你来解释元数据信息。 

原文链接:http://www.cnblogs.com/haogj/archive/2011/01/15/1936473.html

【编辑推荐】

  1. 体验ASP.NET MVC 3中的Razor特性
  2. 详解ASP.NET MVC2项目升级到MVC 3 RC
  3. ASP.NET MVC 3 Beta中超酷的Chart
【责任编辑:陈贻新 TEL:(010)68476606】
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
How ASP.NET MVC Works?
获取部分视图(子控制器)的model值
ASP.NET MVC案例教程—第四篇:传递表单数据
ASP.NET MVC 随笔汇总
我喜欢ASP.NET的MVC因为它牛逼的9大理由
ASP.NET MVC4 IN ACTION学习笔记
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服