在ASP.NET Server Control中使用控件状态

时间:2021-12-11 03:38:33
一提到在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>这个家伙,先进先出的队列,可以让代码看着舒服一些。