C# ASP.NET MVC-将查询字符串值添加到控制器中的RedirectToAction

C# ASP.NET MVC-将查询字符串值添加到控制器中的RedirectToAction,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个ASP.NETMVC应用程序。我的应用程序正在使用T4MVC。在我的控制器中,我需要从一个动作重定向到另一个动作。执行此操作时,我希望附加一个查询字符串值。我可以在没有查询字符串值的情况下成功重定向,但应用查询字符串值失败。我的行动是这样的: [HttpPost] [ValidateAntiForgeryToken] public virtual ActionResult Action1() { return RedirectToAc

我有一个ASP.NETMVC应用程序。我的应用程序正在使用T4MVC。在我的控制器中,我需要从一个动作重定向到另一个动作。执行此操作时,我希望附加一个查询字符串值。我可以在没有查询字符串值的情况下成功重定向,但应用查询字符串值失败。我的行动是这样的:

[HttpPost]
[ValidateAntiForgeryToken]
public virtual ActionResult Action1()
{                        
   return RedirectToAction(MVC.MyController.Action2().AddRouteValue("id", "5"));
}

[Route("action-2")]
public virtual ActionResult Action2(string input)
{
  ViewBag.Input = input;
  return View(viewModel);
}
当我访问时,Action2工作正常。/action-2。我还可以成功地发布到Action1。但是,当重定向不起作用时。我注意到地址栏中有以下内容:

/MyController/id

为什么??我该如何解决这个问题?我只想重定向回Action2,但这次添加了一个查询字符串参数。我缺少什么?

您需要在本例输入的操作中通过名称指定参数,以使其正常工作,请参见以下内容:

return redirectToAction(MVC.MyController.Action2().AddRouteValue("input", "5"));
或者:

return RedirectToAction("Action2", "MyController", new { input = "myInput"});

我试着用下面的方法,效果很好

return RedirectToAction("Index", "CustomBuilder", new { usern = "admin" });
为什么不直接返回RedirectToAction2,MyController,new{id=5};?