首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 狀態管理 (11/13) - ViewState 視圖狀態完整解析

     編輯:關於ASP.NET

ViewState 機制

頁面框架預設機制,將回發間需保留的頁面/控制項值序列化為 Base64 字串,輸出至隱藏欄位 __VIEWSTATE。

存取方式

ViewState["Key"] = value;   // 寫入
var val = ViewState["Key"]; // 讀取

僅限可序列化型別:String、Int、Boolean、Array、ArrayList、Hashtable、自訂型別需標記 [Serializable]。

生命週期

  • 可修改時機:PreRenderComplete 事件前。
  • 呈現後不可變更。

安全強化

  • <%@ Page viewStateEncryptionMode="Always" %>:強制加密。
  • <pages enableViewStateMac="true" %>:完整性驗證 (預設開啟)。

效能與限制考量

  • 大量資料 → 頁面體積膨脹、回發頻寬增加、行動裝置載入緩慢。
  • 超大隱藏欄位可能觸發 Proxy/Firewall 攔截,ASP.NET 可自動拆分多欄位 (MaxPageStateFieldLength)。
  • 部分行動裝置不支援隱藏欄位 → ViewState 失效。

適用建議

  1. 單頁、小量、非敏感資料 → ViewState。
  2. 跨頁、大量、敏感 → Session/Cache/Profile/Database。
  3. 控制項開發者 → 關鍵狀態用 ControlState,其餘用 ViewState。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved