ASP.NET如何关闭页面服务端及对话层清空

这篇文章给大家介绍ASP.NET如何关闭页面服务端及对话层清空,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创新新互联,凭借十载的网站设计、成都做网站经验,本着真心·诚心服务的企业理念服务于成都中小企业设计网站有1000+案例。做网站建设,选成都创新互联

要清掉Session必须回到服务端,在客户端是不能改变服务端内容的。ASP.NET 关闭页面服务端对话层的清空我们可以变通下——使用ajax。首先我们要判断用户什么时候关闭了页面,这样才能执行下一步动作。不过HTML DOM没要页面关闭的事件,只有onunload和onbeforeunload是与ASP.NET 关闭页面有关的,ASP.NET 关闭页面或刷新后的事件,onbeforeunload是ASP.NET 关闭页面或刷新前的事件,所以我们要用的是onbeforeunload。要判断下用户是关闭页面还是在刷新页面。代码如下:

window.onbeforeunload = function()   {      //这是网上找的,具体没验证过
  •       var n = window.event.screenX - window.screenLeft;   

  •       var b = n > document.documentElement.scrollWidth-20;   

  •       if(b && window.event.clientY < 0 || window.event.altKey)     

  •       {     

  •           ClearSession();   

  •       }     

  • ClearSession()为ajax调用请求服务端,服务端接收到请求后执行清空Session的操作。Ajax的东西不多说了,下面为代码。

    ========================Default.aspx 开始===========================================   
    <%@ Page Language="C#" AutoEventWireup="true" 
    CodeFile="Default.aspx.cs" Inherits="_Default" %>     
      
      
          
    无标题页         
         
      
          
              
    
                                 
                    ========================Default.aspx 结束===========================================    ========================Default.aspx.cs 开始===========================================    using System;   using System.Data;   using System.Configuration;   using System.Web;   using System.Web.Security;   using System.Web.UI;   using System.Web.UI.WebControls;   using System.Web.UI.WebControls.WebParts;   using System.Web.UI.HtmlControls;      public partial class _Default : System.Web.UI.Page  {       protected void Page_Load(object sender, EventArgs e)      {                     if (!string.IsNullOrEmpty(Request.QueryString["___command"]))          {               string cmd = Request.QueryString["___command"];               if (cmd == "ClearSession")                   Session.Remove("name");//清空Session           }              if (Session["name"] != null)               this.Label1.Text = Session["name"].ToString();       }      protected void Button1_Click(object sender, EventArgs e)       {          Session["name"] = "vvvvvvvvvvvvv";           if (Session["name"] != null)               this.Label1.Text = Session["name"].ToString();       }   }      ========================Default.aspx.cs 结束===========================================       ========================script.js 开始===========================================    function GetXmlHttpObject()   {       //创建XMLHttpRequest对象来发送和接收HTTP请求与响应       xmlHttpObj = null;      try       {            // FireFox Opera 8.0+ Safari            xmlHttpObj = new XMLHttpRequest();            if(xmlHttpObj.overrideMimeType)             {                 xmlHttpObj.overrideMimeType('text/xml');             }        }          catch(e)       {              // IE          try           {                  xmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");              }                catch(e)                {                   xmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP");                }             }              return xmlHttpObj;          }              function StateChanged()   {                if(___xmlHttp.readyState == 4)       {                     if(___xmlHttp.status == 200)           {              }           else           {                       }                 }    }                var ___xmlHttp=null;     function ClearSession()      {                   if(___xmlHttp==null)                        ___xmlHttp = GetXmlHttpObject();       if(___xmlHttp == null)                                 return false;                var url = "?___command=ClearSession&___clientRandom=" + Math.random();           ___xmlHttp.open("GET", url, true);        ___xmlHttp.onreadystatechange = StateChanged;        ___xmlHttp.send(null);        }       window.onbeforeunload = function()   {             var n = window.event.screenX - window.screenLeft;            var b = n > document.documentElement.scrollWidth-20;               if(b && window.event.clientY < 0 || window.event.altKey)       {               ClearSession();           }     }

关于ASP.NET如何关闭页面服务端及对话层清空就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


文章名称:ASP.NET如何关闭页面服务端及对话层清空
当前路径:http://myzitong.com/article/gjjjei.html