asp.net - 如何使用自定义控件修复 ViewState 序列化错误?

标签 asp.net linq serialization viewstate

我正在编写我的第一个 asp.net 用户控件。

它显示用户可以从中选择的位置列表。我可以将位置列表加载到控件中,并且可以在页面回发时看到用户选择的位置,但是当页面回发时列表本身会丢失。

我用 IEnumerable<DetailedLocation> 类型的对象填充列表哪里DetailedLocation是一个有几个string的类字段。当我尝试将列表放入 ViewState 时,出现以下错误:

Type 'System.Linq.OrderedEnumerable`2  
[[DetailedLocation, AT.Common, Version=1.0.0.0, Culture=neutral, 
PublicKeyToken=null],[System.String, mscorlib, Version=2.0.0.0,  
Culture=neutral, PublicKeyToken=b77a5c561934e089]]' in Assembly 'System.Core,  
Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not 
marked as serializable. 

当然,我的类型可以标记为可序列化,但此错误消息仍然存在。我知道一定有可能以某种方式完成这项工作。毕竟,我可以将这种类型的对象传递给 GridView并且数据将通过回发持续存在。

如何解决这个问题?

最佳答案

如果您已将类型标记为可序列化,请尝试将集合保存为 List 而不是 IEnumerable。我猜测 IEnumerable 接口(interface)下是某种不可序列化的 LINQ 具体集合类型。

关于asp.net - 如何使用自定义控件修复 ViewState 序列化错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4949614/

相关文章:

c# - kernel32.dll 中的 LoadLibrary 函数在 Asp Web 应用程序中返回零

c# - 根据键名选择枚举值

c++ - MFC序列化

asp.net - JSON 数据中的 "<"字符被序列化为\u003c

android - Proguard 保持类(class)成员

ASP.NET asp :Button vs. a href - CSS 样式

.net - 调试器中显示的对象属性与智能感知中显示的对象属性之间的差异

ASP.NET:使用基于站点地图的导航有哪些优点?

c# - linq 按子对象属性分组

.net - 带有过滤条件的 LINQ 连接