一提到在ASP.NET Server Control中進行狀態管理,大家自然而然的就會想起ViewState,對於簡單屬性,這東西畢竟簡單麼,而一提到控制項狀態,大家就會說到這東西還要單獨編程,不方便,其實所謂單獨編程,也就是固定的一段代碼,沒有什麼複雜和麻煩的地方,只是額外需要多大幾個字母而以麼。
簡單的來說,分為四個步驟:
1、老辦法聲明屬性;
2、告訴運行庫你要使用控制項狀態;
3、儲存控制項狀態;
4、讀取控制項狀態;
每個步驟我舉一個簡單的例子,大家一看就明白了。
1、老辦法聲明屬性;ButtonType type = ButtonType.Button;
public ButtonType Type
{
set { this.type = value; }
get { return this.type; }
}
string text = "按鈕";
public string Text
{
set { this.text = value; }
get { return this.text; }
}
2、告訴運行庫你要使用控制項狀態;protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.Page.RegisterRequiresControlState(this);
}
3、儲存控制項狀態;protected override object SaveControlState()
{
Queue<object> states = new Queue<object>();
states.Enqueue(type);
states.Enqueue(text);
return states;
}
4、讀取控制項狀態;protected override void LoadControlState(object savedState)
{
Queue<object> states = savedState as Queue<object>;
type = (ButtonType)(states.Dequeue());
text = (string)(states.Dequeue());
}
補充一下:
1、資料結構這裡採用了Queue<T>這個傢伙,先進先出的隊列,可以讓代碼看著舒服一些。