如何确保在大量复选框控件上禁用viewstate?

时间:2014-07-13 16:46:26

标签: c# asp.net viewstate

我有一个ASP.NET Web表单,它有几千个复选框控件(在父/子层次结构中)。该页面加载大约需要4秒钟。我正在尝试提高性能,以便页面加载只需1-2秒。在进行一些挖掘之后,看起来复选框控件正在生成一个巨大的视图状态对象(HTML文件中几乎为1MB)。如果我使用原始HTML复选框,页面渲染速度非常快(我认为这是因为没有创建视图状态)。我尝试了原始HTML chechbox路由,但是使用dopostback从JS调用ASP.NET方法时遇到了麻烦。无论如何,我的主要目标是消除复选框上的viewstate。我试过通过在复选框控件和ASPX页面上禁用viewstate来尝试这样做。无论我使用什么组合,viewstate对象仍然被创建(正如我所说,它是巨大的)。我甚至试图在触发的所有重大事件中清除代码中的viewstate对象。清除视图状态仍然没有运气。关于我可以做什么来禁用复选框上的viewstate以避免看起来像是导致性能瓶颈的任何建议?

1 个答案:

答案 0 :(得分:0)

保持页面不变的一种方法是使用占位符扭曲复选框并为此设置EnableViewState="false"

<asp:PlaceHolder runat="server" EnableViewState="false">
    <asp:CheckBox runat="server" ID="cbOne" />
</asp:PlaceHolder>

其他方法是将它们全部放在自定义控件中,并为此控件设置EnableViewState="false"