この問題に関する 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に依存するか、この更新情報を何らかの形で保持する必要があります. 任意のヒント?