我正在寻找一种使用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();
}
这样做很有效,除了当你看到网址时,它没有显示/ Home / Foo,它显示/ Home / Zoro。我可以在不使用RedirectToAction的情况下修复此问题吗?如果我使用它,我会得到这个:Home / Foo?Name = bar& Age = 123我不想要。
答案 0 :(得分:7)
而不是直接致电Foo()
,而是RedirectToAction()
使用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
的操作,不适用于{{1}}操作。