退货操作不会更改网址

时间:2014-09-18 15:56:32

标签: 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();
}

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

1 个答案:

答案 0 :(得分:7)

而不是直接致电Foo(),而是RedirectToAction()使用return RedirectToAction("Foo", new {Name = "bar", Age = 123});

您的操作方式是在服务器上调用操作,但实际上并不重定向,如果您希望更改网址,则必须重定向到操作:

TempData[]

UPDATE:

正如评论中提到的如何暂时保留数据,您可以使用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}}操作。