ASP.NET MVC - 向Controller中的RedirectToAction添加查询字符串值

时间:2016-11-09 14:29:58

标签: c# asp.net-mvc

我有一个ASP.NET MVC应用程序。我的应用程序正在使用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,但这次添加了查询字符串参数。我错过了什么?

2 个答案:

答案 0 :(得分:3)

您需要通过操作中的名称指定参数(在本例中为“input”)才能使其生效,请参阅以下内容:

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

或者:

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

答案 1 :(得分:0)

我尝试以下方式,它对我来说很好。

return RedirectToAction("Index", "CustomBuilder", new { usern = "admin" });