在ASP.NET MVC 2中,TempData
值会一直存在,直到会话结束或直到它们被读取为止。在words of Microsoft ...TempData在ASP.NET MVC 2中读取后仍然存在2
的TempData的值一直保持到 它被读取或直到会话超时 出来。以这种方式持久TempData 启用了重定向等场景,因为TempData中的值是 ,可在单个请求之外使用。
我以为我明白了这一点,但我刚刚在我的应用程序中发现了一个不寻常的行为,其中TempData
值可用并且应该不可用。一般情况下,我有一个控制器,其中有一系列操作,其中第一个操作设置值为TempData
,接下来的几个操作读取并设置TempData
值,最后一个操作读取TempData值。下面的伪代码...
[HttpPost]
public ActionResult Step1()
{
TempData["bar"] = foo;
return RedirectToAction("Step2");
}
public ActionResult Step2()
{
var foo = TempData["bar"];
TempData["bar"] = foo;
return View();
}
[HttpPost]
public ActionResult Step2()
{
var foo = TempData["bar"];
TempData["bar"] = foo;
return RedirectToAction("Step3");
}
public ActionResult Step3()
{
var foo = TempData["bar"];
TempData["bar"] = foo;
return View();
}
[HttpPost]
public ActionResult Step3()
{
var foo = TempData["bar"];
return RedirectToAction("AnotherAction", "AnotherController");
}
我的看法是,在读取一个值后,它将不再在TempData中可用。但是我开始逐步完成代码,并且在赋值时键/值将被添加到TempData中,但是当我从TempData中提取值(即使当我到达另一个控制器时),它将从不会退出。
我能够让它消失的唯一方法是手动点击从TempData
读取的操作。
任何人都可以提供任何指针来帮助我更好地理解在ASP.NET MVC 2中持续存在的内容吗?