本篇為狀態管理系列總結,詳細剖析 ViewState 運作機制、IStateManager 介面角色、TypeConverter 自訂轉換邏輯,以及功能相似的 ControlState。作者以打造自訂 MyLogin 控制項為主線,逐步展示如何在 WebControl 衍生類別中儲存屬性至 ViewState。
public class MyLogin : WebControl
{
public string UserName
{
get { return ViewState["UserName"] != null ? (string)ViewState["UserName"] : "UserName"; }
set { ViewState["UserName"] = value; }
}
public string UserPassword
{
get { return ViewState["UserPassword"] != null ? (string)ViewState["UserPassword"] : "UserPassword"; }
set { ViewState["UserPassword"] = value; }
}
// TagKey、RenderContents 實作省略...
}
ViewState[key],自動處理序列化。LoadViewState、SaveViewState、TrackViewState,控制項狀態物件需實作以參與生命週期。EnableViewState 影響,專為控制項核心功能(如分頁、排序)保留必要狀態。文章強調理解自訂控制項開發基礎,建議先閱讀作者的「控制項開發系列」。