我有一个类似于下面的控制器操作,TempData 由我的框架初始化。我注意到,一旦读取该值,TempData 就不会清除该值,如操作“EmployeeUnderAge”中所示。
TempData什么时候清除已经读取的数据?
public class HomeController : Controller
{
public ActionResult Index(int iD)
{
var employeeAge = (int)TempData["Age"];
RouteData.Values.Add("Age", employeeAge);
return RedirectToAction("EmployeeUnderAge");
}
public ActionResult EmployeeUnderAge(int employeeAge)
{
var stillInTempData = (employeeAge == ((int) TempData["Age"]));
return (stillInTempData) ? View("Index") : View("Error");
}
}
以下是使用临时数据时需要注意的一些要点。
对临时数据的读取访问不会立即从字典中删除项目,而只是标记为删除。
TempData 并不总是删除已读取的项目。仅当操作导致 HTTP 200(OK)状态代码(即:ViewResult/JsonResult/ContentResult 等)时,它才会删除该项目
如果发生导致 HTTP 302 的操作(例如任何重定向操作),即使访问数据,数据也会保留在存储中,这就是我的问题中的情况。 TempData 显然是为了将数据传递到不同的控制器/操作而设计的,因此在重定向期间不清除是合理的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)