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

这些常规HTML控件有: <input type="radio" checked="checked"/> - <!> gt;我知道这些没有viewstate

然后有一些HTML控件,其中包含runat = <!> quot; server <!> quot; <input type="radio" checked="checked" runat="server"/> - <!> gt;是否在回发之间维护了视图状态?

然后是ASP.NET控件 <asp:TextBox id="txtMyText" runat="server"/> - <!> gt;我知道这些有viewstate

我们有一些继承HtmlTextBox的自定义控件 <myPrefix:myTextBox id="txtMyText" runat="server"/> - <!> gt;这与上面的类型2相同吗?

是否可以安全地假设任何带有runat="server"标签的控件都会保持viewstate?

有帮助吗?

解决方案

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

其他提示

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

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

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

afaik不,HTML控件不是为了维护视图状态中的任何内容而设计的,如果您关心它,请使用web控件。

您在页面视图中添加的任何内容并添加runat = <!>“server <!>”;将维持viewstate。

对于动态添加的控件,它取决于您何时以及如何将控件添加到控件树。查看此问题的已接受答案,还要检查在这里我的问题

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top