在我的 ASP.NET MVC 3 应用程序中,我需要使用一些特定参数重定向到相同的 Controller 操作对。我用这个:
return RedirectToAction((String)RouteData.Values["action"],
new { param1 = value1, param2 = value2 } );
它可以工作,但是当我想重用它时,我必须随身携带这个相当不优雅的代码。
我当然可以制作一个助手或其他东西,但我希望框架中已经准备好一些东西。
是否有更优雅、更易于重用的方法来实现同样的目的?
最佳答案
您可以简单地传递 null
作为操作名称:
return RedirectToAction(null, new { param1 = value1, param2 = value2 } );
在内部,RedirectToAction
正在调用 RouteValuesHelpers.MergeRouteValues()
辅助方法,该方法将尝试将新路由值(包括操作)与现有路由数据合并在 Controller 初始化时已经可用。因此,如果 action
为 null,则 MergeRouteValues
将按您的意愿返回当前操作。
你可能想用更明确的结构来替换 null
来清楚地表达你的意图:
private const string SAME_ACTION = null;
// then
return RedirectToAction(SAME_ACTION, new { param1 = value1, param2 = value2 } );
参见 Controller.cs (第 512 行)和 RouteValuesHelpers.cs (第 49 行)
关于c# - 如何重定向到 MVC3 中的相同 Controller 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29074609/