检测用户何时在Page_Load事件中离开页面

时间:2011-10-01 16:43:29

标签: asp.net web-applications

当用户离开页面时,它再次触发Page_Load事件。我怎么能在code_behind中告诉你发生了这种情况,这样可以避免运行自定义函数,因为Page_Load中的代码在离开页面时并不真的需要运行?

2 个答案:

答案 0 :(得分:2)

  

当用户离开页面时,它会再次触发Page_Load事件

离开页面是什么意思?关闭浏览器或单击浏览器上的“返回”按钮?或者转移到另一个页面?在加载页面上或在同一页面上发生回发时,会触发Page_Load方法,但不会离开它。

在开始任何操作之前,您可以(并且应该)确保客户端仍然连接并使用HttpResponse.IsClientConnected属性。

当满足以下条件时,IsClientConnected属性返回false:

  1. 终止与客户端的连接。如果调用Close方法,或者客户端停止执行网页或浏览到另一个页面,则会发生这种情况。
  2. 处理请求的HttpWorkerRequest对象为null,或者HttpWorkerRequest.IsClientConnected方法返回false。如果自定义HttpWorkerRequest对象处理请求,则可以根据自定义条件设置HttpWorkerRequest.IsClientConnected方法。例如,自定义工作者请求可能会在一段时间后强制超时。
  3. http://msdn.microsoft.com/en-us/library/system.web.httpresponse.isclientconnected.aspx

    修改

    切换标签通常会触发正常的回发,以检测您应该使用的标签:

    private void Page_Load(object sender, System.EventArgs e)
    {
        if (!Page.IsPostback)
        {
           //this is first load of this page
        }
    }
    

答案 1 :(得分:1)

如果我理解正确,您正在寻找IsPostBack属性:

 private void Page_Load()
 {
    if (!IsPostBack)
    {
        // Any code here will only run the first time the page is loaded  
    }
}