为ASP.NET MVC 1添加强类型Helper
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等方法都应该有其强类型的重载