有没有办法检测 asp.net web mvc 5.0 项目中浏览器是否已关闭?

Is there a way to detect if browser has been closed in a asp.net web mvc 5.0 project?

我正在使用临时数据作为变量,当前在家庭控制器中设置了它,在我的第一个最后一个控制器中,我通过 if(TempData.ContainsKey()) TempData.Remove() 删除了该键。我把它放在那里假设用户将从点 A 到点 D,其中 D 是最后一个控制器。但我注意到,如果我在应用程序的任何一点关闭应用程序,分配的临时数据即 tempdata["username"] = username 将包含从程序最初开始输入的先前值,然后将在用户输入后更新值来更新临时数据的键。 在 asp.net web mvc 5.0 项目中,有没有一种方法可以检查浏览器是否已关闭,这样我就可以删除最后一个控制器内部的逻辑,该逻辑将密钥删除到检查浏览器是否关闭的逻辑?

您可以使用 beforeunload 事件检测 tab/browser 从 javascript 关闭。 Credited Source

window.addEventListener('beforeunload', function (e) {
    // User is closing the tab/browser
    // You can cancel this event by using e.preventDefault();
    // and for older browsers by using  e.returnValue = '';
});

从那里您可以使用 AJAX 将消息发送回您的应用程序以处理临时数据删除。

下面使用JQuery

$.ajax({
    method: "POST",
    url: "AbandonSession",
    data: { someVar: "some val" }
})
.done(function( msg ) {
    alert( "Session abandoned: " + msg );
});