返回操作不会';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,我不想要。
与其直接调用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
操作。