asp.net 表單 ViewState隱藏域
阿新 • • 發佈:2018-04-12
val class ada for copy 傳值 start sel 就是
2.控件級別
3.應用程序級別
4.機器級別
頁面級別禁止的方法是在頁面的開始寫入
[csharp]view plaincopy
一、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.頁面級別3.應用程序級別
4.機器級別
頁面級別禁止的方法是在頁面的開始寫入
[csharp]view plaincopy
- spanstyle="font-family:MicrosoftYaHei;"
asp.net 表單 ViewState隱藏域