您好,登錄后才能下訂單哦!
這篇文章給大家介紹ASP.NET如何關閉頁面服務端及對話層清空,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
要清掉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" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>無標題頁</title> <script type="text/javascript" src="script.js"></script> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server"></asp:Label> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="寫入Session" /></div> </form> </body> </html> ========================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如何關閉頁面服務端及對話層清空就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。