c# - 如何在MVC3中重定向到相同的 Controller Action ?

原文 标签 c# asp.net .net asp.net-mvc-3 redirect

在我的ASP.NET MVC 3应用程序中,我需要使用一些特定的参数重定向到相同的控制器动作对。我用这个:

return RedirectToAction((String)RouteData.Values["action"],
    new { param1 = value1, param2 = value2 } );


它可以工作,但是当我想重用它时,我必须随身携带这个相当笨拙的代码。

我当然可以制作一个助手或其他东西,但是我希望框架中有准备好的东西。

也许有一些更优雅且易于重用的方法来做到这一点?

最佳答案

您可以简单地将null作为动作名称传递:

return RedirectToAction(null, new { param1 = value1, param2 = value2 } );


在内部,RedirectToAction正在调用RouteValuesHelpers.MergeRouteValues()帮助器方法,该方法将尝试将新的路由值(包括动作)与控制器初始化时已经可用的现有路由数据合并。因此,如果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行)

相关文章:

asp.net - 如何清除包含GridView的空div

javascript - 我如何将参数传递给通用处理程序

.net - 默认情况下,线程是否在多个内核上运行?

c# - 将日期时间格式化为特定格式

c# - ashx中的Server.MapPath?

c# - 如何在C#中格式化CNIC格式的文本框

javascript - 如何将一些字符串或数据从API传递到 Angular 6中的 Angular 组件?

javascript - ScriptControl WebResource加载顺序

c# - WPF / C#-以编程方式创建和使用单选按钮的示例

c# - C#WPF按下按钮时执行操作