类型“System.Web.UI.WebControls.ListItem”必须标记为 Serializable 或者具有 ReferenceConverter 以外的 TypeConverter,才能被放置在视图状态中。
我在页面 有代码
ViewState["condcol"] = arr;
arr是一个数组,数组中的值是ListItem
现在出现上面那个错误提示。
自定义类好象在放到ViewState中,也出现这个错误,就只在类定义前加一个Serializable就可以了
但我现在用的是系统有的类ListItem.
我应该如何处理这个问题
ListItem不能序列化,也就不能放在ViewState或者Session里,只能用别的办法替代解决;
恐怕ListItem控件本身也没有保存的价值,需要的是它上面的数据而已
放到 session里边
是的
ListItem没有实现Serilizable,所以不能写入ViewState。
你可以查看都有哪些类型实现了序列化。
你必须继承它,并且为你的ListItem实现序列化功能。
另外,ListItem实际自身就是一种viewState类型,因此父类可以在自身的saveViewState和 LoadViewState 中直接调用它的saveViewState和LoadViewState,而不需要通过把它再放入ViewState中来序列化它。
一个ViewState数组可能不能放入另一个ViewState数组中,因为它没有Serilizable。但是,控件又是怎么序列化、反序列化ViewState的呢?控件在调用SaveViewState和LoadViewState的时候,调用了ViewState属性SaveViewState和LoadViewState。因此,假设自定义的控件有不止一个ViewState数组,或者其它任何实现了IStateManager接口的属性,都可在自身SaveViewstateState和LoadViewState的时候自定义依次调用它们的相应方法并把输出结果组合在一起,而并不比把这些实现了IStateManager接口的数据先放到同一个ViewState里边再调用原来的方法处理,这样它们就不必实现ISerilized。
用个ListControl的items来保存
楼主解决了吗,我也碰到同样的问题,现在还没解决!!!!!!!!!!!!!
同样,一个自定义类不能放入ViewState,郁闷