1. 程式人生 > >Asp.net中的ViewState用法

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用法