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

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

成都创新互联作为成都网站建设公司,专注重庆网站建设公司、网站设计,有关成都定制网站方案、改版、费用等问题,行业涉及护栏打桩机等多个领域,已为上千家企业服务,得到了客户的尊重与认可。

   
   
   
  1. window.onbeforeunload = function()   
  2. {     
  3.  //这是网上找的,具体没验证过  
  4.       var n = window.event.screenX - window.screenLeft;   
  5.       var b = n > document.documentElement.scrollWidth-20;   
  6.       if(b && window.event.clientY < 0 || window.event.altKey)     
  7.       {     
  8.           ClearSession();   
  9.       }     

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

   
   
   
  1. ========================Default.aspx 开始===========================================  
  2.  
  3. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>  
  4.    
  5.  
  6.  
  7.  
  8.     无标题页  
  9.    
  10.       
  11.    
  12.  
  13.  
  14.       
  15.         
     
  16.               
  17.             
 
  •       
  •  
  •  
  • ========================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();   
  •       }     
  • }   
  • 本文来自:博客           作者:陈粤雄

    【编辑推荐】

    1. 中途关闭ASP.NET是否影响服务器端执行
    2. 关闭浏览器Session1分钟失效ASP.NET的BUG
    3. 概述ASP.NET页面框架
    4. 描述ASP.NET页面表单
    5. ASP.NET 页面对象模型

    本文题目:ASP.NET 关闭页面服务端对话层清空
    标题来源:http://www.mswzjz.cn/qtweb/news32/33282.html

    攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

    广告

    声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能

    贝锐智能技术为您推荐以下文章

    面包屑导航知识

    同城分类信息