如何避免ASP.NET中的TextChanged事件

时间:2013-01-27 17:16:40

标签: asp.net textbox viewstate textchanged

我有一个TextBox和一个回发按钮。

<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged1"     EnableViewState="false"></asp:TextBox><span></span>
<asp:Button ID="Button1" runat="server" Text="Button" />

所以,我只需要在文本发生变化时触发TextChanged事件(具有讽刺意味),就像EnableViewState为真时触发一样。我不能取消订阅事件或在其他地方订阅它或启用ViewState。 我试图从HiddenField中的TextBox保存文本,然后检查它是否已更改。这是代码

 protected void Page_Load(object sender, EventArgs e) {
    if (HiddenField1.Value != TextBox1.Text) {
        HiddenField1.Value = TextBox1.Text;
        TextBox1.Text = HiddenField1.Value;
    }           
}

但是我不知道当文本没有改变时该怎么做而不是发动事件。

1 个答案:

答案 0 :(得分:1)

问题在于禁用ViewState时从TextBox保存值。将它保存在HiddenField中并不是一个好主意,因为我们可以从Page_Load上的HiddenField获取值,但我们需要在T​​extBox init上获取它。但是,如果我们将TextBox保存到Session变量,则此问题将消失。这是代码:

protected void TextBox1_TextChanged1(object sender, EventArgs e) {
    Session["text"] = TextBox1.Text;
}
protected void TextBox1_Init(object sender, EventArgs e) {
    if(Session["text"]!=null)TextBox1.Text = Session["text"].ToString();
}

在textchanged事件的会话变量中保存值,并在textbox init上恢复它。比较在框架级别上运行。