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

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

在我的 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/

相关文章:

c# - EntityFramework 包版本 ="6.1.3"和 Web 配置版本 6.0.0.0?

c# - ASP :Image with Link

c# - 使用 Kendo 菜单打开多个窗口

.net - SAP 与 Xamarin 集成?

asp.net - 通过Ajax向 Controller 发送数据

c# - 从 C# 类库生成文档

c# - 如何在 CaSTLe.Windsor 中配置提供多个服务的单个组件实例?

c# - Active Directory UserPrincipal.Current.GetGroups() 在本地而不是在 Web 服务器上返回组

asp.net - jquery 下拉选择器 AutoPostback

html - 如何使用 CSS 对齐文本框旁边的图像?