【问题标题】:How to reduce viewstate size of server control?如何减少服务器控件的视图状态大小?
【发布时间】:2013-03-20 18:29:26
【问题描述】:

我开发了一个继承自CompositeDataBoundControlINamingContainer 的服务器控件。它有 2 个文本框和 1 个小图像。

但是在GridView 中渲染时,它的 ViewState 大小最多为 500 字节。它也有大约 20 个属性,但我这里没有使用 ViewState。

我只使用get;set;,并且在回发时再次绑定。

现在我想知道如何减小这个 ViewState 大小以及如何检查这个 ViewState 。如果我可以检查 ViewState 的值,这将有助于解决问题。

【问题讨论】:

  • 顺便说一句,它不仅仅是 CompositeControl。它是 CompositeDataBoundControl。

标签: asp.net viewstate


【解决方案1】:

将 ViewState 粘贴到 base-64 decoder 中。我总是觉得看看是什么占用了空间。

请记住,ViewState 字段还包括 ControlState

它有 2 个文本框和 1 个小图像。

某些控件在没有 ViewState 的情况下也可以很好地运行,因为它们在 HTTP 请求中始终存在。 TextBox 是显式禁用 ViewState 的理想选择,因为它的值始终作为请求的一部分发回服务器。

图像也是禁用 ViewState 的理想选择,除非计算 URL 需要处理时间(例如,数据库调用与静态分配)。

但是在 GridView 中渲染时...

GridView 几乎肯定会添加到 ViewState 本身。你有考虑吗?

【讨论】:

  • 谢谢,蒂姆。这很有帮助。
【解决方案2】:

你可以禁用视图状态

this.EnableViewState = false;

您还可以检查此链接Disable View State for a Page 以禁用页面中的视图状态。

如果您想检查视图状态,可以使用ASP.NET ViewState Helper 或 Fiddler 等工具来分析视图状态。

【讨论】:

  • 谢谢,hagensoft。但我是服务器控件开发人员,我不能告诉所有开发人员禁用视图状态。我的观点是减少视图状态大小的技巧是什么,而不是关闭它。
  • 这里有一些策略可以帮助您减少视图状态的大小。 stackoverflow.com/questions/1944218/…
猜你喜欢
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多