|
狀態時某一類型的數據在一定時期內保持活躍的信息。這里說的一定時期可以使整個應用程序的生命周期,可以使用戶操作程序的時間,當然也可以是單個頁面的生命周期等。
為了解決傳統Web編程中固有的限制,ASP.NET提供了按頁面保留數據和在整個應用程序范圍內保留數據的功能,這些具體功能如下:(其中1到5是以不同方式將數據存儲到客戶端上,6到8是將數據存儲到服務器上的內存中)
一、視圖狀態
ViewState屬性提供一個字典對象,用于在對同一頁的多個請求之間保留值。它是頁用來在往返行程之間保留頁和控件屬性值的默認方法。
當將頁面回發至服務器時,頁面會在頁的初始化階段分析視圖狀態字符串,和原頁中的屬性信息。也可以使用視圖狀態來存儲值。
視圖狀態提供了特定ASP.NET頁的狀態信息。如果需要在多個頁上使用信息,或者如果需要在訪問網站時保留信息,則應當使用另一個方法(如應用程序狀態、會話狀態或個性化設置)來維護狀態。
注意:視圖狀態信息將序列化為XML,然后使用Base64編碼進行編碼,這將生成大量的數據。將頁回發到服務器時,視圖狀態的內容將作為頁面回發信息的一部分發送。如果視圖狀態包含大量信息,則會影響頁的性能。
在某些情況下(如數據驅動頁在每次回發時從數據存儲區進行刷新),應當關閉視圖狀態以移除由數據控件(如GridView控件)生成的大量隱藏字段。
換句話說,我們要盡量避免在前臺使用視圖狀態,如果可能的話,可以用input的控件,這樣可以提高網站的性能。
存儲在視圖狀態中的數據類型如下:字符串、整數、布爾值、Array對象、Arraylist對象、哈希表、自定義類型轉換器。
使用視圖狀態具有以下3個優點:
一、耗費的服務器資源較少(與Application、Session相比):因為,視圖狀態數據都寫入了客戶端計算機中。
二、易于維護:在默認情況下.NET系統自動啟用對控件狀態數據的維護。
三、增強的安全功能:視圖狀態中的值經過哈希計算和壓縮,并且針對Unicode實現進行編碼,其安全性要高于使用隱藏域。
使用視圖狀態具有以下3個缺點:
一、性能注意事項:如果存儲較大的值,用戶顯示頁和發送頁時的速度減慢。
二、設備限制:移動設備可能沒有足夠的內存容量來存儲大量的視圖狀態數據。
三、潛在的安全風險:視圖狀態存儲在頁上的一個或多個隱藏域中。雖然視圖狀態以哈希表格式存儲數據,但它可以被篡改。
加密視圖狀態:在@ Page指令中,將ViewStateEncryptionMode屬性設置為
<% @Page ViewStateEncryptionMode="Always"... %>
NET技術:ASP.NET的狀態管理,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。