Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当有人按下退出按钮时,我如何控制_C#_C# 4.0_Jquery_Asp.net Ajax - Fatal编程技术网

C# 当有人按下退出按钮时,我如何控制

C# 当有人按下退出按钮时,我如何控制,c#,c#-4.0,jquery,asp.net-ajax,C#,C# 4.0,Jquery,Asp.net Ajax,我如何控制当有人按下firefox、chrome、IE、safari上的退出按钮时,或者控制按下风扇关闭按钮后将其从数据库中删除时,实际上我知道这一点。我唯一的问题是怎么抓住那个按钮 我有一些代码,但似乎不起作用。我得到的代码是这样的 function LogOutUser(result, context) { // don't do anything here } function LogMeOut() { LogOutUserCallBack

我如何控制当有人按下firefox、chrome、IE、safari上的退出按钮时,或者控制按下风扇关闭按钮后将其从数据库中删除时,实际上我知道这一点。我唯一的问题是怎么抓住那个按钮

我有一些代码,但似乎不起作用。我得到的代码是这样的

function LogOutUser(result, context) {
        // don't do anything here
    }

    function LogMeOut() {
        LogOutUserCallBack();
    }

<div onload="SetScrollPosition()" onunload="LogMeOut()">
</div>
在我的default.aspx.cs上

public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler


string callBackReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "LogOutUser", "");
        string logOutUserCallBackScript = "function LogOutUserCallBack(arg, context) { " + callBackReference + "; }";
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "LogOutUserCallBack", logOutUserCallBackScript, true);

void System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)

     _callBackStatus = "failed";

     // log out the user by deleting from the LoggedInUser table
     DataClassesDataContext db = new DataClassesDataContext();

     var loggedInUser = (from l in db.BrugerOnlines
                         where l.BrugerId == Convert.ToInt32(Session["ChatUserID"])
                         && l.RumId == lb
                         select l).SingleOrDefault();

     db.BrugerOnlines.DeleteOnSubmit(loggedInUser);
     db.SubmitChanges();

     var besvarer = (from p in db.Rums where p.FK_Bruger == Session["SupportAdd"].ToString() select p).SingleOrDefault();
     db.Rums.DeleteOnSubmit(besvarer);
     db.SubmitChanges();
     // insert a message that this user has logged out
     this.sendbesked("Bruger har lukket siden " + DateTime.Now.ToString());

     _callBackStatus = "success";
 }
string  System.Web.UI.ICallbackEventHandler.GetCallbackResult()
 {
     return _callBackStatus;
 }
在我的default.aspx上,它看起来是这样的

在页面顶部的javascript中,它如下所示

function LogOutUser(result, context) {
        // don't do anything here
    }

    function LogMeOut() {
        LogOutUserCallBack();
    }

<div onload="SetScrollPosition()" onunload="LogMeOut()">
</div>

如果您只想在用户关闭浏览器时执行某些操作,请在页面正文的“卸载前”上调用您的方法

我看不出有任何理由去关注button事件

按下
X
按钮将导致
会话结束

只需处理global.aspx会话_End

如本例所示:

注意:这不会在用户退出时发生,而是在seesion超时时发生

  • 您使用的是用于检测页面的空闲时间&基于重定向用户的超时

  • 您可以使用::


  • 当用户离开页面导航时,卸载事件被发送到窗口元素。这可能意味着许多事情之一。用户可以单击链接离开页面,或者在地址栏中键入新的URL。前进和后退按钮将触发事件关闭浏览器窗口将触发事件。即使重新加载页面也会首先创建卸载事件。

    但如果我使用该选项,则等待会话结束,对吗?因为我将会话超时设置为1-2小时左右。timeout属性指定了分配给应用程序会话对象的超时时间,以分钟为单位。如果用户在超时期间未刷新或请求页面,会话将结束。我想那是一段很长的时间。为什么不;你能不能用10分钟来解决你的问题?因为我正在制作一个聊天应用程序,我不会在上面设置会话超时。他们想呆多久就呆多久。我想把它们扔掉的唯一方法是当它们使用关闭按钮时。所以只要在seision结束后进行清理,这有什么关系?那会有什么作用?我只是想了解我在做什么,为什么我的updatepanel中会有一个计时器来更新我的div调用卸载事件?我想你的答案中有希望。但是如果你能提供的话,我需要更多的信息