【发布时间】:2012-08-23 20:39:54
【问题描述】:
在网页中,我将Dictionary 存储在ViewState 中:
Dictionary<string, string> items = new Dictionary<string, string>();
ViewState["items"] = items;
效果很好。但是,由于某些原因,我想使用自己的类而不是直接使用Dictionary:
class MyDictionary : Dictionary<string, string>
{
...
}
MyDictionary items = new MyDictionary();
ViewState["items"] = items;
它没有按预期工作。 ASP.NET 抱怨这一事实
MyDictionary 未标记为可序列化
没关系,因为类属性不是继承的。所以我改变了我的代码:
[Serializable]
class MyDictionary : Dictionary<string, string> { ... }
但如果我这样做,我会收到另一条错误消息,这次是在页面回发之后:
此页面的状态信息无效,可能已损坏。
System.Web.UI.ObjectStateFormatter.Deserialize(Stream inputStream)
如果 viewstate 可以序列化 Dictionary,为什么它不适用于从它继承的类?如何使这项工作?
【问题讨论】:
-
您是否在页面上动态添加控件或类似的东西? stackoverflow.com/questions/8946374/…您的自定义字典很好,它应该在 ViewState 中没有问题。
标签: c# asp.net dictionary viewstate webpage