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

ASP.NET 狀態管理 (12/13) - ControlState 控制項狀態

     編輯:關於ASP.NET

ControlState 定義

專供控制項開發者儲存**關鍵**視圖狀態資料的獨立物件。頁面開發者停用 EnableViewState 時,ViewState 遺失但 ControlState 保留。

實作步驟

  1. 覆寫 LoadControlState、SaveControlState。
  2. 在 OnInit 呼叫 Page.RegisterRequiresControlState(this) 註冊。

儲存與還原範例

// 自訂 PageStatePersister
public override void Save()
{
    var statePair = new Pair(ViewState, ControlState);
    var writer = new StringWriter();
    StateFormatter.Serialize(writer, statePair);
    // 寫入儲存媒介
}

public override void Load()
{
    var reader = new StreamReader(GetSecureStream());
    var statePair = (Pair)StateFormatter.Deserialize(reader.ReadToEnd());
    ViewState = statePair.First;
    ControlState = statePair.Second;
}

適用場景

  • 分頁控制項:目前頁碼 (關鍵),資料內容 (可放 ViewState)。
  • GridView 排序/分頁/編輯索引:ControlState 保存。
  • 自訂複雜控制項:核心運作狀態與 UI 狀態分離。

注意事項

  • ControlState **不可停用**,只存放真正關鍵的最小資料集。
  • 序列化格式與 ViewState 共用 ObjectStateFormatter (Pair 結構)。
  • ASP.NET 2.0+ 內建控制項 (GridView、DetailsView 等) 已正確使用 ControlState。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved