asp.net mvc:将RedirectToAction(string,object)变为RedirectToAction <controller>(x =&gt; x.Detail(id))</controller>

时间:2010-01-20 16:00:54

标签: c# asp.net-mvc lambda

任何人都知道如何创建一个方法(我将它放在扩展类中),它将与mvc的RedirectToAction一样只使用表达式(没有魔术字符串)。

所以不要写这样的东西:

 RedirectToAction("Detail", 
    new RouteValueDictionary { {"messageId", messageId}});

我会这样做:

this.RedirectToAction(x => x.Detail(messageId));

我尝试过做过类似的事情,但我不知道如何添加参数:

 public static RedirectToRouteResult RedirectToAction<T>(this T controller,
     Expression<Action<T>> expression)
 {
     return RedirectToAction(
        (expression.Body as MethodCallExpression).Method.Name
     );
 }

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

http://www.clariusconsulting.net/blogs/kzu/archive/2008/04/07/59274.aspx

另外,我相信当1.0出现时,他们将类型安全的HtmlHelper扩展转移到了MVC Futures组件中,但我现在似乎无法找到它。