RedirectToAction 并传递一个值?

RedirectToAction and pass a value?

如果我有一个控制器操作可以重定向到另一个操作,如下所示:

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

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

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

您可以使用 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 可能会有帮助。

是,使用TempData

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

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

希望对您有所帮助:

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

否则,您真的需要调用 RedirectToAction(从另一个控制器调用操作)吗?还是您的操作在同一个控制器中?