專供控制項開發者儲存**關鍵**視圖狀態資料的獨立物件。頁面開發者停用 EnableViewState 時,ViewState 遺失但 ControlState 保留。
LoadControlState、SaveControlState。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;
}
ObjectStateFormatter (Pair 結構)。