【问题标题】:Store DataTable in view state以视图状态存储 DataTable
【发布时间】:2012-05-30 08:09:43
【问题描述】:

我想我找到了 :D,错误的数据 :D – 史蒂夫·乔布斯


我有一个数据表对象,我想将它存储在 Viewstate 中,但有时会发生错误(不常见

Error: Sys.WebForms.PageRequestManagerServerErrorException: Error serializing value 'Table1' of type 'System.Data.DataTable.'

请帮忙

【问题讨论】:

  • 如果您要存储大量的行和列,ViewState 可能不是最适合您的存储介质。
  • 不,这不是一个大数据,我只有 5 行,我不知道为什么它有时工作有时不工作

标签: c# asp.net datatable


【解决方案1】:

您面临的问题是由于数据表的大小。

在 ViewState 中存储数据表不是一个好习惯,因为它会增加页面的大小并降低性能,而且 ViewState 可以在客户端被解密,因此 DataTable 不安全。

您可以通过会话或更多的缓存来完成它,如果它不经常使用,我建议您从数据库重新查询它。

【讨论】:

  • 问题是我想对 Datatable 进行一些修改,这就是为什么我想要一个临时版本,并且我使用视图状态来确保它在我离开页面时被删除
  • 数据表中存在哪些值,如果您将不可序列化的对象存储在表中,则该表不再可序列化。您需要为每个控件编写一个序列化器/反序列化器。
【解决方案2】:

使用 Session 来存储 DataTable,因为 Viewstate 对于存储像 DataTable 这样的大对象效率不高,因为它们与每个服务器请求一起包装。

  Session[dt] = datatableobj; 

【讨论】:

  • 我没有大数据,只有5行,正常工作一段时间
猜你喜欢
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多