如何减少服务器控件的视图状态?

时间:2013-03-30 00:52:33

标签: asp.net viewstate

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

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

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

现在我想知道如何减少这个ViewState大小以及如何检查这个ViewState。如果我可以检查ViewState的值,那么修复问题会很有帮助。

2 个答案:

答案 0 :(得分:1)

将ViewState粘贴到base-64 decoder中。我总是觉得看到占据空间的东西很有启发性。

请注意,ViewState字段还包含ControlState

  

它有2个TextBox和1个小图像。

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

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

  

但是在GridView中渲染时......

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

答案 1 :(得分:0)

您可以使用

禁用视图状态
this.EnableViewState = false;

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

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