日期:2014-05-19  浏览次数:20457 次

求救,关于将自定义对象保存到ViewState中遇到的问题!
我的自定义类代码如下:
[Serializable()]
public   class   Tree
{
        private   TreeView   tree   =   null;

        public   Tree(TreeView   _tree)
        {
                tree   =   _tree;
        }
}
我在页面上实例化了一个这个类,然后将实例对象保存到了ViewState中,但是页面执行后却出现‘TreeView未标记为序列化’的错误,请大家帮帮我~~

------解决方案--------------------
TreeView不支持序列化,去网上找找有很多相关资料
------解决方案--------------------
序列化有两种,二进制和XML。
你可以把对象序列化成二进制并保存到STRING里,用时再反序列化。
下面两个方法就是STRING 到 任意对象的相互转换
public static string StringObj(object obj)
{
try
{
byte[] byteArr;
using(MemoryStream ms = new MemoryStream())
{
new BinaryFormatter().Serialize(ms, obj);
byteArr =ms.GetBuffer();
}
return new UnicodeEncoding().GetString(byteArr);
}
catch(Exception err)
{
}
return null;
}

public static object ObjectStr(string str)
{
object obj = null;
try
{
byte[] byteArr = new UnicodeEncoding().GetBytes(str);
using(MemoryStream ms = new MemoryStream(byteArr))
{
obj = new BinaryFormatter().Deserialize(ms);
}
}
catch(Exception err)
{
}
return obj;
}