你要将自动以对象存储到VIEWSTATE中,需要给对象添加 [Serializable] 特性
例如:
[Serializable]
public class A{}
之所以在你给VIEWSTATE赋值的时候没有出错误,因为赋值的时候并没有做序列化操作。
而是asp.net框架的SavePageStateToPersistenceMedium 方法做的序列化,在render之前。
可能就是outline = GetOutline();
course = GetCourse(outline);返回的结果对象不知道如何序列化才引发此异常,
你可以看看它们都是什么,对于如何序列化你可以在园子里找找,有很多文章!
尚未序列化到 ViewState 中的对象,如 DataSet。ViewState 序列化程序只为一小部分常用的对象类型进行了优化,其他可序列化的类型或许可以保留在 ViewState 中,但速度会变慢,并会生成一个非常大的 ViewState。
xuexi
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter b = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.MemoryStream ms = new System.IO.MemoryStream();
b.Serialize(ms, 你的任何对象);
ms.Close(); ms.Dispose();
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter b = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.MemoryStream ms = new System.IO.MemoryStream(((System.IO.MemoryStream)ms).GetBuffer());
你的任何对象obj= (你的任何对象)b.Deserialize(ms);
ms.Close();
ms.Dispose();