返回操作不会更改URL

0 c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我正在寻找一种方法来重定向POST,我发现的解决方案建议只使用我想要的动作名称并填写参数.所有这些都在同一个控制器内(我们称之为Home)

[HttpPost]
public ActionResult Zoro(NameOfMyModel model, string stringName)
{
  //Do whatever needs to be done
  return Foo("bar",123);
}

[HttpPost]
public ActionResult Foo(string Name, int Age)
{
    //Code here that use the params
    return View();
}
Run Code Online (Sandbox Code Playgroud)

所以这很有效,除了当你看到网址时,它没有显示/ Home/Foo,它显示/ Home/Zoro.我可以在不使用RedirectToAction的情况下修复此问题吗?如果我使用它,我得到这个:Home/Foo?Name = bar&Age = 123我不想要.

Ehs*_*jad 7

而不是直接调用Foo()使用RedirectToAction()它的这个重载.

您执行的操作调用服务器上的操作,但实际上不会重定向,如果您希望更改URL,则必须重定向到操作:

return RedirectToAction("Foo", new {Name = "bar", Age = 123});
Run Code Online (Sandbox Code Playgroud)

更新:

如在评论中提到如何暂时保留数据,您可以使用TempData[]它:

TempData["Name"] = bar";
TempData["Age"] = 123;

return RedirectToAction("SomeAction");
Run Code Online (Sandbox Code Playgroud)

在那个行动中你可以从TempData以下方面得到它:

public ActionResult SomeAction()
{

string Name = TempData["Name"] as string;
int Age - TempData["Age"] as int;

return View();

}
Run Code Online (Sandbox Code Playgroud)

注意:

请注意,RedirectToAction()仅适用于操作HttpGet,它不适用于HttpPost操作.