我知道 StackOverflow 上关于这个问题的类似问题,但没有一个解决了我的问题,所以我正在创建一个新问题。
正如标题所说,我想检测用户何时刷新页面。我有一个页面,我在其中保存了一些有关用户在其上所做操作的日志信息(例如添加、删除或编辑项目)。此日志只能在用户离开页面时保存,不能通过刷新来保存。
我尝试了下面的示例来检测它是刷新还是新请求:
public ActionResult Index()
{
var Model = new Database().GetLogInfo();
var state = TempData["refresh"];
if(state == null)
{
//This is a mock structure
Model.SaveLog(params);
}
TempData["refresh"] = true; //it can be anything here
return View();
}
考虑到TempData
它应该在我的下一步行动中过期。但是,由于某种原因,它在整个应用程序中仍然存在。根据这个博客,它应该在我随后的请求中过期(除非我不明白)。即使我从我的应用程序中注销并再次登录,我的 TempData 仍然存在。
我一直在考虑使用 javascript 函数onbeforeunload
对某些操作进行 AJAX 调用,但我不得不再次依赖 TempData 或以某种方式保留此刷新信息。有小费吗?