- 微软前日发布了ASP.NET MVC 2的第一个公开预览版。在这篇博文中,.NET开发总管Scott Gu将详细介绍应该如何使用其中的新功能。
其他酷特性
ASP.NET MVC 2第一个预览版还包含了若干个虽小但是很妙的特性。我最喜爱的几个包括:
新的[HttpPost]特性
在 ASP.NET MVC中,把一个URL的处理分成2个action方法的做法是非常常见的,其中一个处理GET请求,另一个处理POST请求。
在ASP.NET MVC 1中,你使用[AcceptVerbs(HttpVerbs.Post)]特性来表示action方法的“Post”版本:
在ASP.NET MVC 2中这依然工作,但你现在也可以利用更简洁的[HttpPost]特性来做同样的事情:
默认参数值
处理可省参数在web场景中是司空见惯的事。在ASP.NET MVC 1中,处理可省参数一般有2个做法,通过注册定制的路径规则,在其中指定默认的值,或者将某个action方法的参数标记为nullable,然后在 action方法中添加代码处理该参数是否是null(如果是null就提供默认值)。
ASP.NET MVC 2第一个预览版现在支持在action方法的参数上饰以System.ComponentModel命名空间下的 DefaultValueAttribute。这允许你在某个参数不在请求值中时指定ASP.NET MVC应该传给action方法的参数值。例如,下面是一个我们可以如何处理 /Products/Browse/Beverages 和 /Products/Browse/Beverages?page=2 URLs的例子,如果“page”参数不是查询字符串的一部分时,其值为“1”:
VB今天就允许你直接在语言中指定默认的参数值(而不必象上面那样显式指定DefaultValue特性),VS2010中的C#语言也将支持可省参数的默认值,将允许我们把上面的代码简化成:
这应该会使处理默认/可省场景变得非常地干净利落。
绑定二进制数据
ASP.NET MVC 2的第一个预览版还加了支持绑定base64编码的字符串值到类型为byte[]和System.Data.Linq.Binary的属性。现在还有2个 可以接受这些数据类型的重载的Html.Hidden()版本。在你想要在应用中启用并发性控制,在表单中来回传送数据库行记录的时间戳 (timestamp)值的场景下,这会非常有用。
结语
点击这里下载 包含一个ASP.NET MVC 2项目的.zip文件,该项目实现了我在上面示范的样例。
今天的ASP.NET MVC 2版本还只是第一个预览版,将来的预览版中将包括更多的特性,开发团队期待在如何改进和增强功能方面得到许许多多的反馈。
有规律地发布这些预览版的目的是想帮助确保这个反馈过程是开放的,任何想参与的人都可以轻易地参与。请在www.asp.net 的ASP.NET MVC论坛上发贴提反馈,建议或者贴出你遇到的问题等。 你也可以从Phil Haack的MVC2贴子 和 Phil和 Scott Hanselman在Channel9录制的关于第一个预览版的录像中了解这个预览版的详情。
希望本文对你有所帮助,