【问题标题】:Why do some asp.net controls keep its state although its EnableViewState property is false?为什么某些 asp.net 控件的 EnableViewState 属性为 false,但仍保持其状态?
【发布时间】:2011-12-15 00:13:34
【问题描述】:

在网站上放置一个文本框、一个复选框和一个按钮。 将文本框和复选框的“EnableViewState”属性设置为false。 在文本框中写入一些内容并选中复选框。 点击按钮。

为什么响应后文本框仍然写入并且复选框被选中?

【问题讨论】:

  • 艾哈迈德,如果它解决了您的问题,请确保接受答案,这对您提出的每个问题都是不利的。您可以通过单击有帮助的答案旁边的复选标记来执行此操作,它会为您提供代表,回答者代表,使下一个人更容易找到答案,并使您的问题更容易回答,这意味着您可以更快地获得答案.

标签: asp.net viewstate


【解决方案1】:

有些事情并不完全依赖于 ViewState。在您列出的控件中,这些值在发送到服务器的 POST 中可用,因此它们已离开那里并且控件以这种方式恢复其状态。

其他内容,例如 <asp:Label> 中的文本不会以任何方式发回,并且如果没有 ViewState,它们将丢失数据。其他属性也是如此,例如文本框的样式等……只有 value 将被恢复,因为这就是发送回来的所有内容,因此,所有内容都被编码为抓取和恢复。如果你说让它变红,那会在回发时丢失。

作为一般规则,控件可以严格从发布的数据中恢复的内容将在回发时恢复,其他所有内容都会丢失。

【讨论】:

    【解决方案2】:

    因为 HTML 控件是无状态控件。因此,Microsoft 提供了 ViewState 的一项功能,可以帮助用户将数据发送到服务器或回发后保持不变。因此,您必须将属性“EnableViewState”设置为 True。默认情况下,所有 ASP.NET 控件的 EnableViewState 都设置为 True

    【讨论】:

    • 我已经认识他们了。这就是为什么我说“将文本框和复选框的“EnableViewState”属性设置为 false。”
    猜你喜欢
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 2021-09-15
    • 1970-01-01
    相关资源
    最近更新 更多