RedirectToAction并传递一个值?

时间:2018-02-07 16:37:55

标签: c# asp.net-mvc asp.net-core-mvc-2.0

如果我有控制器操作重定向到另一个操作,那么:

public ActionResult Index()
{
    RedirectToAction("Redirected", "Auth", new { data = "test" });
}

public ActionResult Redirected(string data = "")
{
    return View();
}

网址栏会有"重定向?data = test"在其中,哪种AFAIK是正确的行为。有没有办法可以直接将变量传递给Redirected ActionResult而无需在客户端进行更改? 我想通过"测试"直接到重定向的ActionResult而不更改URL。我确定这是一个简单的方法,但它正在逃避我。 我知道我可以在我可以传递变量的函数之外创建一个静态变量,但这似乎不是一个合适的解决方案。

3 个答案:

答案 0 :(得分:2)

您可以使用TempData变量。

public ActionResult Index()
{
    TempData["AfterRedirectVar"] = "Something";
    RedirectToAction("Redirected", "Auth", new { data = "test" });
}

public ActionResult Redirected(string data = "")
{
   string tempVar = TempData["AfterRedirectVar"] as string;
   return View();
}

This link可能会有所帮助。

答案 1 :(得分:0)

是的,请使用TempData

public ActionResult Index()
{
  TempData["data"] = "test";
  RedirectToAction("Redirected", "Auth"});
}

public ActionResult Redirected()
{
  var data = TempData["data"].ToString();
  return View();
}

答案 2 :(得分:0)

我希望这可以帮到你: https://stackoverflow.com/a/11209320/7424707

在我看来,TempData不是最合适的解决方案。如果我是你,我会寻找另一种解决方案。

否则,你真的需要调用RedirectToAction(从另一个控制器调用一个动作)吗?或者你的行为是否在同一个控制器中?

相关问题