6.3 控件狀態機制
自ASP.NET 2.0開始支持控件狀態機制。控件的狀態數據現在能通過控件狀態而不是視圖狀態被保持,控件狀態是不能夠像視圖狀態那樣被禁用的。由於控件狀態的工作方式與視圖狀態完全一致,並且默認情況下在頁面中它們都是存儲在同一個隱藏域中,這裡對它的工作原理就不多介紹了。
與LoadViewState和SaveViewState類似,控件狀態也是提供了一對這樣的方法,方法名稱分別為LoadControlState和SaveControl State,並且也是在Control基類中提供。
圖6-5中加灰底部分是控件狀態在控件生命周期中的階段。
如果啟用控件狀態功能,只需實現以下幾個方法:
/// <summary>
/// 獲得本書更多內容,請看:
/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx
/// </summary>
public class ControlStatePeriod : WebControl
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
Page.RegisterRequiresControlState(this);
}
protected override object SaveControlState()
{
//… …
}
protected override void LoadControlState(object savedState)
{
//… …
}
}