如果我有控制器操作重定向到另一个操作,那么:
public ActionResult Index()
{
RedirectToAction("Redirected", "Auth", new { data = "test" });
}
public ActionResult Redirected(string data = "")
{
return View();
}
网址栏会有"重定向?data = test"在其中,哪种AFAIK是正确的行为。有没有办法可以直接将变量传递给Redirected ActionResult而无需在客户端进行更改? 我想通过"测试"直接到重定向的ActionResult而不更改URL。我确定这是一个简单的方法,但它正在逃避我。 我知道我可以在我可以传递变量的函数之外创建一个静态变量,但这似乎不是一个合适的解决方案。
答案 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(从另一个控制器调用一个动作)吗?或者你的行为是否在同一个控制器中?