牢记ViewState仅能存储已序列化类
今天遇到个奇怪问题。代码如下:
protected void RelationSource(IList<fgf_fgfgl_lxxx> xp) {
ViewState["lxrxx"] =xp;
}
或者:
protected IList<fgf_fgfgl_lxxx> RelationSource{
set{ ViewState["lxrxx"] = value;}
}
运行时发生错误,详细显示为:程序集“App_Code.oqyv7eae, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”中的类型“fgf_fgfgl_lxxx”未标记为可序列化。
奇怪,怎么回事?网上曰:ViewState只能在当前页面使用,并且保存的只能是已经序列化的类,例如.NET中的strings, integers, Booleans, arrays, ArrayList, hashtable,DataTable等。如果没有序列化,则会抛出异常。可序列化类或者用Session存储。