返回操作不会';t更改URL

本文关键字:更改 URL 操作 返回 | 更新日期: 2023-09-27 18:23:35

我一直在寻找一种使用POST重定向的方法,我找到的解决方案建议只需使用我想要的操作名称并填充参数。所有这些都在同一个控制器内(让我们称之为主页)

[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();
}

所以这很好,只是当你看url时,它不会显示/Home/Foo,而是显示/Home/Zoro。我可以在不使用RedirectToAction的情况下解决此问题吗?如果我使用它,我会得到这个:Home/Foo?名称=条形图;年龄=123,我不想要。

返回操作不会';t更改URL

与其直接调用Foo(),不如将RedirectToAction()与此重载一起使用。

你这样做的方式调用服务器上的操作,但实际上没有重定向,如果你想更改url,你必须重定向到操作:

return RedirectToAction("Foo", new {Name = "bar", Age = 123});

更新:

正如评论中提到的如何临时保存数据一样,您可以使用TempData[]

TempData["Name"] = bar";
TempData["Age"] = 123;
return RedirectToAction("SomeAction");

在这个动作中,你可以从TempData:获得它

public ActionResult SomeAction()
{
string Name = TempData["Name"] as string;
int Age - TempData["Age"] as int;
return View();
}

注意:

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