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