1. 程式人生 > >asp.net 表單 ViewState隱藏域

asp.net 表單 ViewState隱藏域

val class ada for copy 傳值 start sel 就是

一、ViewState概述

①ViewState是基於webform的

②在web窗體控件屬性處設置runat = "server",這個控件會被附加一個隱藏的屬性_ViewState,_ViewState存放了所有控件在ViewState中的狀態值。

③頁面會在輸出時,自動添加下面的隱藏域:

技術分享圖片

value處的值只是base64編碼並不是加密。

④ViewState是一個名稱/值的對象集合。

⑤當請求某個頁面時,ASP.NET會把所有控件的狀態序列化成一個字符串,然後作為窗體的隱藏屬性送到客戶端,當客戶端將頁面回傳時,ASP.NET分析回傳的窗體屬性,並賦給控件對應的值。(恢復現場)

⑥ViewState不能存儲所有的數據類型,僅支持:String、Integer、Boolean、Array、ArrayList、Hashtable

二、ViewState原理

技術分享圖片

①瀏覽器請求Default.aspx頁面。

②在服務器端 發現創建的ViewState 這個時候 會自動創建一個名字叫做__VIEWSTATE(雙下滑線 全部是大寫)的隱藏域 其隱藏域的值經過base64加密以後返回到瀏覽器端這一加密過程在頁面生命周期的SaveState事件中的SaveAllState方法中完成。

③當瀏覽器提交表單的時候 將__VIEWSTATE的隱藏域也一起提交到服務端 這個時候 頁面生命周期的ReadState事件的ReadAllState方法會將加密後的值反base64解密 最後將值賦值給名字叫做xx的ViewState。

④最後來操作ViewState中的值。

三、使用

1.使用原因

由於http是無記憶無狀態的協議。頁面傳值給服務器,都是通過form表單,且控件自己必須有name屬性與value才可以得到值。但是像顯示動態信息很多情況下並不都是使用滿足上述條件的控件,所以需要將http偽裝為有記憶的。而viewstate就是可以事先這個偽裝術的策略。

2.使用方法

① 條件與設置 技術分享圖片 ② 實例 aspx.cs文件: 技術分享圖片 aspx界面(就一個自增按鈕): 技術分享圖片 運行效果: 技術分享圖片 ③ 禁用方法 在默認情況下,所有服務器控件的viewstate開啟狀態,通過以及幾種途徑來禁止。 1.頁面級別
2.控件級別
3.應用程序級別
4.機器級別

頁面級別禁止的方法是在頁面的開始寫入
[csharp]view plaincopy
  1. spanstyle="font-family:MicrosoftYaHei;"

    asp.net 表單 ViewState隱藏域