哪些控件有ViewState维护?

我试图围绕控制基础设施,以了解哪些ASP.NET维护视图状态。

有这些常规HTML控件ex: – >我知道这些没有viewstate

然后是带有runat =“server”的HTML控件 – >是否在回发之间维护了viewstate?

然后有ASP.NET控件 – >我明白这些确实有viewstate

我们有一些自定义控件inheritanceHtmlTextBox – >这与上面的类型2相同吗?

假设使用runat="server"标记的任何控件都将保持viewstate是否安全?

有3种类型的控件,标准HTML元素,如添加了runat = server标签的HTML服务器控件,以及完整的Web控件。 只有Web控件具有维护的视图状态。

当我们遇到viewstate问题时,我开始使用Binary Fortress的Viewstate帮助软件http://www.binaryfortress.com/aspnet-viewstate-helper/

它让您真正了解正在发生的事情 – 以及帮助解决与视图状态相关的性能问题,您只需单击一下即可解码视图状态并查看其中的实际内容 – 这样您就可以了解哪些控件正在使用viewstate以及哪些控件正在使用t,以及它们存储在那里的确切内容。

此外,其他人没有提到的是ControlState。 这与ASP.NET 2一起出现, 理论是控件运行所必需的重要内容在控件状态和视图状态中的数据等,因此您可以关闭视图状态并将数据绑定到你对每个回发的控制和控件仍然基本上使用controlstate。 我说“理论”,因为在实践中,实施似乎不完整。 例如,当您使用reflection器查看下拉列表代码时,这未正确实现。 这可能随着框架的后续版本而改变,我不确定。 如果你搜索它,有很多关于控制状态的信息,我以为我会提到它。

afaik不,HTML控件不是为了在视图状态中维护任何东西而设计的,如果你关心它,那就采取web控件。

您放在页面视图中并添加runat =“server”的任何内容都将保持视图状态。

至于动态添加的控件,它取决于您何时以及如何将控件添加到控件树。 查看此问题的已接受答案,但也请在此处查看我的问题 。