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

微软发布的ASP.NET MVC2首个预览版引入了一系列新功能,包括[HttpPost]特性简化POST请求处理,默认参数值支持及二进制数据绑定等。开发团队正积极收集反馈以进一步完善。

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

  • 微软前日发布了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”版本:

使用[AcceptVerbs(HttpVerbs.Post)]特性  

在ASP.NET MVC 2中这依然工作,但你现在也可以利用更简洁的[HttpPost]特性来做同样的事情:

利用更简洁的[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”:

参数不在请求值中时指定ASP.NET MVC应该传给action方法的参数值  

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录制的关于第一个预览版的录像中了解这个预览版的详情。

希望本文对你有所帮助,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值