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,加上之后的确运行成功了但是很不幸,这种方式是要挨板砖的.