代码改变世界

为ASP.NET MVC 1添加强类型Helper

2010-01-29 19:36  Rwing  阅读(448)  评论(0编辑  收藏  举报

ASP.NET MVC 2 的RC版已经发布有些日子了,提供了很好的强类型helper,例如使用

<%= Html.TextBoxFor(m => m.User.Username) %>

来取代

<%= Html.TextBox("Username") %>

不过我个人还是不大敢在正式项目中使用非正式版的,所以将此功能移植到MVC1,其实也就是表达式树的解析,那么我们直接用MVC2的代码就好了,MVC2的ExpressionHelper类中有提供GetExpressionText(string expression)的方法.

 

可是,MVC2中仍然没有提供生成link的强类型方法,如

<%= Html.ActionLink<HomeController>(c => c.Index(), "Home") %>

仍然是

<%= Html.ActionLink("Home", "Index", "Home")%>

不过庆幸的是,包含在MVC中的MvcFutures项目有提供这类功能,直接使用或提取相关方法吧

 

事实上,我们应该尽量使用强类型数据,例如RedirectToAction等方法都应该有其强类型的重载

[下载与文章相关的提取自MVC2及MvcFutures中的类]