C# 将datalist添加到viewstate中
我在视图状态中添加了一个C# 将datalist添加到viewstate中,c#,asp.net,exception,serialization,C#,Asp.net,Exception,Serialization,我在视图状态中添加了一个datalist,如下所示: ViewState["datalist"] = dtlstForm; 并将其检索为: DataList lis = (DataList)ViewState["datalist"]; 然后出现以下错误: 在程序集System.Web中键入'System.Web.UI.WebControl.DataList', 版本=2.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'为 未标记为可序列化 除非对象实
datalist
,如下所示:
ViewState["datalist"] = dtlstForm;
并将其检索为:
DataList lis = (DataList)ViewState["datalist"];
然后出现以下错误:
在程序集System.Web中键入'System.Web.UI.WebControl.DataList',
版本=2.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'为
未标记为可序列化
除非对象实现ISerializable,否则无法将其置于viewstate中。 viewstate在发送到客户端之前已序列化 您可以以与viewstate类似的方式使用会话,无论出于何种目的,会话都是正常的。我想这次会议需要更多的资源
datalist是您自己的类吗?如果是这样的话,您也可以实现ISerializable,但如果我可以只键入session,我就不会这样做。除非对象实现ISerializable,否则无法将其置于viewstate中。 viewstate在发送到客户端之前已序列化 您可以以与viewstate类似的方式使用会话,无论出于何种目的,会话都是正常的。我想这次会议需要更多的资源 datalist是您自己的类吗?如果是这样的话,您也可以实现ISerializable,但如果我可以只键入session,我就不会这样做。该类不可序列化(没有在其上设置SerializableAttibute,并且它没有实现接口) 这意味着.NET framework无法序列化它并将其置于ViewState中 因为这是一个内置类,所以不能将其修改为可序列化 由于数据列表预计会包含相当多的信息,将其置于ViewState会导致ViewState非常庞大,这会影响性能,因此不将其序列化是有意义的 也许您可以重新考虑需要放入ViewState中的信息,只在其中放入少量信息(例如ID列表)。该类不可序列化(未在其上设置SerializableAttibut,且未实现接口) 这意味着.NET framework无法序列化它并将其置于ViewState中 因为这是一个内置类,所以不能将其修改为可序列化 由于数据列表预计会包含相当多的信息,将其置于ViewState会导致ViewState非常庞大,这会影响性能,因此不将其序列化是有意义的
也许您可以重新考虑需要放在ViewState中的信息,只在其中放入少量信息(例如ID列表)。DataList=System.Web.UI.WebControl.DataList,因此OP自己的类不可用。SessionState只有在设置为InProc(进程中)并保存在应用程序内存中时才起作用。如果您使用状态服务器或Sql server来保存会话状态,则会话中保存的任何对象也需要可序列化。DataList=System.Web.UI.WebControl.DataList,因此不是OP自己的类。SessionState仅在设置为InProc(进程中)并保存在应用程序内存中时才起作用。如果使用状态服务器或Sql server保存会话状态,则会话中保存的任何对象也需要可序列化。要问的问题是“为什么”要将此控件置于ViewState中?这样做的目的是什么?我可以问一下为什么要将数据列表放入ViewState吗?DataList是一个控件,ASP.NET中有一个非常好的控件层次结构。要问的问题是“为什么”要将此控件置于ViewState中?这样做的目的是什么?我可以问一下为什么要将数据列表放入ViewState吗?DataList是一个控件,ASP.NET中有一个非常好的控件层次结构。