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我不想要.
而不是直接调用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操作.
| 归档时间: |
|
| 查看次数: |
1942 次 |
| 最近记录: |