C# ViewState维护了哪些控件?
我正试图了解ASP.NET为哪些基础结构维护视图状态 有以下常规HTML控件,例如:C# ViewState维护了哪些控件?,c#,.net,asp.net,viewstate,C#,.net,Asp.net,Viewstate,我正试图了解ASP.NET为哪些基础结构维护视图状态 有以下常规HTML控件,例如: ->我知道这些没有viewstate 然后是带有runat=“server”的HTML控件 ->回发之间是否维护viewstate 还有ASP.NET控件 ->我知道这些都有viewstate 我们有一些继承HtmlTextBox的自定义控件 ->这与上面的类型2相同吗 可以安全地假设任何带有runat=“server”标记的控件都将维护viewstate吗?afaik否,HTML控件不是为维护viewstat
->我知道这些没有viewstate
然后是带有runat=“server”的HTML控件
->回发之间是否维护viewstate
还有ASP.NET控件
->我知道这些都有viewstate
我们有一些继承HtmlTextBox的自定义控件
->这与上面的类型2相同吗
可以安全地假设任何带有
runat=“server”
标记的控件都将维护viewstate吗?afaik否,HTML控件不是为维护viewstate中的任何内容而设计的,如果您关心它,请使用WebControl。有3种类型的控件,标准HTML元素如下:,添加了runat=server标记的HTML服务器控件,以及完整的web控件。只有web控件维护了viewstate。当我们遇到viewstate问题时,我开始使用Binary Fortress中的viewstate帮助软件
它可以让您真正了解正在发生的事情,并帮助解决与viewstate相关的性能问题。您只需单击一下即可解码viewstate,并查看其中的实际内容,这样您就可以了解哪些控件正在使用viewstate,哪些控件没有使用viewstate,以及它们在其中存储的确切内容
另外,没有人提到过ControlState。这与ASP.NET 2一起出现,其原理是控件功能所需的重要内容进入控件状态,数据等进入viewstate,因此您可以关闭viewstate并在每次回发时将数据绑定到控件,控件基本上仍然使用controlstate工作。我之所以说“理论”,是因为在实践中,实现似乎参差不齐。例如,当您使用reflector查看dropdownlist代码时,这并没有正确实现。我不确定,随着框架的更高版本,这种情况可能已经改变。有很多关于controlstate的信息如果你搜索它,我想我会提到它。任何你放在页面视图上并添加runat=“server”的东西都会保持viewstate
对于动态添加的控件,这取决于何时以及如何将控件添加到控件树。请检查已接受的答案,但也请检查。这是不正确的。如@MikeW所述,只有web控件维护了viewstate。即使它具有runat=server,也不会维护viewstate