很多書沒講! Asp.net網頁各種狀態管理(不得為Null否則報錯)
狀態歸納表
瀏覽器 (前端) |
說明 |
伺服器端 (後端) |
說明 |
Cookie (可賦予生命週期) |
非加密式,容易被發現,僅存在瀏覽器(用戶端),可以給予生命週期。 |
Application |
全域變數,所有人都能共用,同一個記憶體區塊,修改時要鎖定,改完要解鎖。 |
Html5 Local Storage |
儲存在遊覽器(可以跨分頁) |
ViewState |
如果畫面沒有控制項ViewState不會幫使用者記憶上次的操作,加密式,存在Server 記憶體裡,僅在原頁面。
|
Html5 Session Storage |
儲存在遊覽器關掉就沒了 |
Session |
速度快,存在Server 記憶體,閒置時WebServer 會回收,預設20分鐘(IIS Server) Session 相當的安全(國際標準),不管你切換瀏覽器,或是遠端登入無法登入會被伺服器認為是不同的電腦。
|
(以下記錄簡單的狀態,雖皆能接收,但千萬別把資料庫放進去以免影響資源)
1. Application[“變數”] =>全域變數,所有人都能共用,修改時要鎖定,改完要解鎖。
application.Lock();
application[aa] = “XXX”;
application.UnLock();
實務應用:聊天室、緊急公告
2.Session["變數”] =>速度快,存在Server 記憶體,閒置時WebServer 會回收,預設20分鐘(IIS Server) Session 相當的安全(國際標準),不管你切換瀏覽器,或是遠端登入無法登入會被伺服器認為是不同的電腦。
Session.Abandon()=> 清除網站登出。
Session.clear() =>??
3.ViewState["變數”] =>如果畫面沒有控制項ViewState不會幫使用者記憶上次的操作,加密式,存在Server 記憶體裡,僅在原頁面。
的功能就是保存網頁上所有的資料,好處是當PostBack發生時,資料不會不見,在存Server 端
ViewState[“myid”];
Response.write(ViewState[“myid”]);
4.cookie 非加密式,容易被發現,僅存在瀏覽器(用戶端),可以給予生命週期。
Response.Cookies["Login"].Value = "OK";
Response.Cookies["Login"].Expires = DateTime.Now.AddDays(30);
Request.cookie[];
Html5 對應 aspnet 語言
5.Web Storage
Web Storage 有兩種
Web Storage 分為兩種:local storage 和 session storage。二者的主要差異在於壽命長短與有效範圍。壽命長短:儲存於 local storage 中的資料,其生命週期較長,session storage 則較短,只要瀏覽器視窗或分頁(tab)關閉就會消失。
有效範圍:儲存於 local storage 的資料可以跨瀏覽器分頁(tab),session storage 則不行。
先知道這樣就好,稍後會進一步說明,並且用一個影片來展示它們的差別。
設定
window.localStorage.setItem("MyKeyName", "MyDataValue");
window.sessionStorage.setItem("MyKeyName", "MyDataValue")
讀取
var value1 = window.localStorage.getItem("MyKeyName");
var value2 = window.sessionStorage.getItem("MyKeyName");