Asp.net ViewState——自定义状态管理(一)2011-12-30 博客园 MythYsJh在写自己的控件的时候我们不可能一直只定义string,int等内置类型的属性-夜路走多了总会撞鬼的.当遇到复杂属性(自定义的类型)时,我们该如何来保存其视图状态呢.这个问题困扰了我很久...下面我想用几个小例子表达下自己的"捉鬼"经历.Husband
namespace Controls{  using System;  using System.Collections.Generic;  using System.Text;  using System.Web.UI;  public class Husband: Control  {    public Wife MyWife    {      get      {        .      }      set      {        ViewState["MyWife"] = value;      }    }  }  public class Wife  {    private string m_Name;    private int m_Age;    public string Name    {      get { return m_Name; }      set { m_Name= value; }    }        public int Age    {      get { return m_Age; }      set { m_Age= value; }    }  }}看见这段代码,很多朋友估计都要骂我了,为什么呢,运行下吧:发现会抛出以下异常
Type "Controls.Wife" in Assembly "Controls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" is not marked as serializable.
在看见这种异常后,以前我都会直接在Wife前面加上[Serializable]Attribute,加上之后的确运行成功了但是很不幸,这种方式是要挨板砖的.