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

ASP.NET 內部機制深度解析(六):ViewState 序列化與還原全流程圖解

     編輯:關於ASP.NET

本篇從 HTTP 無狀態本質切入,詳細闡述 ASP.NET 如何透過 ViewState 在請求間保存物件狀態。核心流程分為「儲存階段」與「載入階段」兩大部分,並附上實際 __VIEWSTATE 隱藏欄位 Base64 字串範例。

儲存階段(請求結束前)

  1. 頁面迭代 Controls 集合,呼叫每個控制項的 SaveViewState()。
  2. 控制項將狀態封裝為物件回傳。
  3. 頁面收集所有控制項回傳物件,透過型別轉換器轉為字串。
  4. 字串組合後寫入 <input type="hidden" name="__VIEWSTATE" ... />。
  5. 隨頁面 HTML 一同送至用戶端。

載入階段(下一次回傳)

  1. 從表單資料取出 __VIEWSTATE 字串。
  2. 解析字串還原狀態物件(利用對應型別轉換器)。
  3. 呼叫各控制項 LoadViewState(object savedState) 還原狀態。
  4. 繼續後續生命週期處理。

關鍵觀念

  • 本質是序列化/反序列化:伺服器將物件圖序列化為字串送往客戶端,回傳時反序列化重建。
  • 依賴型別轉換器:TypeConverter 負責物件與字串雙向轉換。
  • 效能考量:ViewState 會增加頁面大小與頻寬,複雜頁面應謹慎使用或改用 ControlState/Session/快取。

下一篇將探討頁面解析過程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved