2016-11-09 71 views
1

我有一个ASP.NET MVC应用程序。我的应用程序正在使用T4MVC。在我的控制器中,我需要从一个动作重定向到另一个动作。当我这样做时,我想追加一个查询字符串值。我可以成功重定向而不使用查询字符串值,但我一直未能成功应用查询字符串值。我的行为是这样的:ASP.NET MVC - 将查询字符串值添加到控制器中的RedirectToAction

[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,但是这次添加了查询字符串参数。我错过了什么?

+0

为什么不只是'返回RedirectToAction(“Action2”,“MyController”,new {id = 5});'? – trashr0x

回答

2

您需要指定由名字在动作参数(在这种情况下,“input”),以便为它工作,见下图:

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

或者:

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

我尝试以下方式,它对我来说工作正常。

return RedirectToAction("Index", "CustomBuilder", new { usern = "admin" }); 
相关问题