【问题标题】:How do I disable viewstate for a specific control?如何禁用特定控件的视图状态?
【发布时间】:2011-01-21 07:57:11
【问题描述】:
<asp:TextBox ID="TextBox1" runat="server" EnableViewState="false" />
<asp:Button ID="Button1" runat="server" Text="Button" />

我已将 EnableViewState 属性设置为 false,但是当我单击按钮时,文本框中的值在回发后仍然存在。为什么值会持续存在?

【问题讨论】:

标签: asp.net postback viewstate


【解决方案1】:

看看Understanding ASP.NET View State。在页面生命周期中,有一个 Load Post Data 阶段,它将从表单数据中填充您的控件值。

View State 可能非常令人困惑,特别是如果控件在回发时填充了表单数据,为什么需要它。来自上面同一链接的The Role of View State 很好地解释了它为什么有用。

总结一下:用户输入不需要视图状态。视图状态用于存储对发生的页面状态的编程更改。一个简单的示例是单击非提交按钮并且处理程序更改标签的文本时。该更改应存储在 View State 中,以便在其他回发中保持不变。

【讨论】:

  • 谢谢比尔。你提到的那篇文章绝对很有趣。我不知道 IPostbackdatainterface 和示例是公平解释的。
【解决方案2】:

接受输入的控件可以通过使用发布到服务器的数据来恢复它们的状态。它们不需要存储在 ViewState 中。在某种程度上,这些不是旧值,而是用户提交的新值(尽管他可能没有更改它们)。

【讨论】:

    【解决方案3】:

    Explanation

    最简单的方法是每次设置Text属性为String.Empty。

    【讨论】:

    • 这是一个非常糟糕的做法,我的朋友。
    • 我在问如何使用视图状态!!
    • @chandan-khatwani:“为什么价值会持续存在?”你确定你问的是如何使用 ViewState?
    • 是的,我是。我在我的代码中提到 EnableViewState 为 false。没有冒犯的朋友。我们都在学习。 ;)
    • @zavaz。浏览比尔提到的文章。这是非常有帮助的伙伴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 2011-01-26
    相关资源
    最近更新 更多