Asp.net中的ViewState用法
asp.net ViewState用法:
ASP.NET中的ViewState是ASP.NET中用來儲存WEB控制元件回傳時狀態值一種機制.在WEB窗體(FORM)的設定為runat="server",這個窗體(FORM)會被附加一個隱藏的屬性_VIEWSTATE._VIEWSTATE中存放了所有控制元件在ViewState中的狀態值.
ViewState是類Control中的一個域,其他所有控制元件通過繼承Control來獲得了ViewState功能.它的型別是system.Web.UI.StateBag,一個名稱/值的物件集合.
當請求某個頁面時,ASP.NET把所有控制元件的狀態序列化成一個字串,然後做為窗體的隱藏屬性送到客戶端.當客戶端把頁面回傳時,ASP.NET分析回傳的窗體屬性,並賦給控制元件對應的值.當然這些全部是由ASP.NET負責的.
定義ViewState屬性
Public int PageCount
{
get{return(int)ViewState["PageCount"];}
set{ViewState["PageCount"]=value;}
}
使用ViewState的條件
如果要使用ViewState,則在ASPX頁面中必須有一個伺服器端窗體標記(<formrunat=server>).窗體欄位是必需的,這樣包含ViewState資訊的隱藏欄位才能回傳給伺服器.而且,該窗體還必須是伺服器端的窗體,這樣在伺服器上執行該頁面時,ASP.NET頁面框架才能新增隱藏的欄位.
Page的EnableViewState屬性值為true.
控制元件的EnableViewState屬性值為true.
提醒:
1.當存在頁面回傳時,不需要維持控制元件的值就要把ViewState禁止.
2.ViewState的索引是大小寫敏感的.
3.ViewState不是跨頁面的.
4.為了能包存在ViewState中,物件必須是可流化或者定義了TypeConverter.
5.控制元件TextBox的TextMode屬性設定為Password時,它的狀態將不會被儲存在ViewState中,這應該是出於安全性的考慮.
6.在頁面沒有回傳或重定向或在回傳中轉到(transfer)其他頁面時不要使用ViewState.
7.在動態建立控制元件時要小心它的ViewState.
8.當禁止一個程式的ViewState時,這個程式的所有頁面的ViewState也被禁止了.
9.只有當頁面回傳自身時ViewState才是持續的.
設定ViewState
ViewState可以在控制元件,頁,程式,全域性配置中設定.預設情況下EnableViewState為true.如果要禁止所有頁面ViewState功能,可以在程式配置中把EnableViewState設為false.
本文關於:asp.netViewState用法