asp.net mvc: 将 RedirectToAction(string, object) 变成 RedirectToAction<Controller>(x => x.Deta
Posted
技术标签:
【中文标题】asp.net mvc: 将 RedirectToAction(string, object) 变成 RedirectToAction<Controller>(x => x.Detail(id))【英文标题】:asp.net mvc: make RedirectToAction(string, object) into RedirectToAction<Controller>(x => x.Detail(id)) 【发布时间】:2011-01-07 08:21:09 【问题描述】:任何人都知道如何创建一个方法(我将把它放在扩展类中),它与 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
);
【问题讨论】:
【参考方案1】:MvcContrib 有它:http://mvccontrib.codeplex.com/wikipage?title=RedirectToAction
【讨论】:
啊啊,贡献不是期货。 +1 这个contrib在mvc2上,我还在用mvc 1 MVC1 版本也在那里,例如mvccontrib.codeplex.com/Release/…。【参考方案2】:http://www.clariusconsulting.net/blogs/kzu/archive/2008/04/07/59274.aspx
另外,我相信他们在 1.0 发布时将类型安全的 htmlHelper 扩展移到了 MVC Futures 程序集中,但是我现在似乎找不到它。
【讨论】:
以上是关于asp.net mvc: 将 RedirectToAction(string, object) 变成 RedirectToAction<Controller>(x => x.Deta的主要内容,如果未能解决你的问题,请参考以下文章
如何先用asp.net身份框架数据库将asp.net mvc迁移到asp.net core
ASP.NET MVC教程五:ASP.NET MVC中的路由
ASP.NET MVC Area使用-将Area设置成独立项目