ViewState用法:
ViewState是一個儲存頁面狀態的,可以使使用者在使用某動態網頁面時,獲得連續性動作的功能,而不需要重新輸入一遍資料。
與static靜態變數區別在於,如果一個使用者訪問的時候,ViewSatate與static是沒什麼區別,但是如果多個使用者訪問的時候,靜態變數就會一直不斷的更改,導致資料混亂,但ViewState的話,就是每個使用者互不干涉,並且能儲存當前頁面狀態,從而使得一些操作和資料互動更加良好。
用法是:
ViewState可以是一個對象,一個字串、多種資料類型等等。
Person user = new Person();
ViewState["uservs"] = user; //裝箱操作
“每次”需要用到的時候,則是
Person p = ViewState["uservs"] as Person; //拆箱操作
需要注意的是,此時的Person類要進行序列化[Serializable]
綜合特點是,可以進行對對象的操作,但是僅僅限於是在同一頁面之中。
網上的參考資料:
viewstate的值儲存在瀏覽器的html代碼中 , 當瀏覽器關閉 , 則值消失 , 即viewstate是在本頁面之內各函數間進行傳值的 , 至於為什麼要使用這種方法 , 因為在一個事件發生之後 , 頁面可能會重新整理 , 如果定義全域變數會被清零 , 所以要使用 viewstate.
ViewState: ViewState 屬性提供一個字典對象,用於在對同一頁的多個請求之間保留值。這是頁用來在往返行程之間保留頁和控制項屬性值的預設方法。在處理頁時,頁和控制項的目前狀態會散列為一個字串,並在頁中儲存為一個隱藏欄位或多個隱藏欄位(如果儲存在 ViewState 屬性中的資料量超過了 MaxPageStateFieldLength 屬性中的指定值)。當將頁回傳到伺服器時,頁會在頁初始化階段分析檢視狀態字串,並還原頁中的屬性資訊。也可以使用檢視狀態來儲存值。在預設情況下,ViewState不被加密,並且發生伺服器-用戶端資料轉送。 ViewState的關鍵特性有:儲存於頁面上,與會話且與頁面相關,被序列化,預設發生伺服器-用戶端傳輸,預設不被加密。