В ASP.NET MVC 2 значения TempData
сохраняются до завершения сеанса или до тех пор, пока они не будут прочитаны. Говоря словами Microsoft ...
Значение 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
.
Может ли кто-нибудь предоставить какие-либо указатели, которые помогут мне лучше понять, что происходит с TempData
постоянством в ASP.NET MVC 2?