0

我有一个文本框和一个回发按钮。

<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;
    }           
}

但是我不知道当文本没有更改并且不触发事件时该怎么办。

4

1 回答 1

1

问题是在禁用 ViewState 时从 TextBox 保存值。将它保存在 HiddenField 中并不是一个好主意,因为我们可以在 Page_Load 上从 HiddenField 中获取值,但我们需要在 TextBox 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 事件上保存会话变量中的值并在文本框初始化时恢复它。比较在框架级别上运行。

于 2013-01-28T16:01:03.377 回答