c# - 如何检测用户更改表单数据?
问题描述
ASPX:
<asp:TextBox id="tb1" runat="server"/>
C#:
public hello(){
Debug.WriteLines("Current value is: " + tb1.Value);
}
我有一个计时器,它将在页面开始时每 2 秒运行一次 hello()。假设 tb1 有一个默认值“Bob”,这将每 2 秒正确输出一次。假设我在 tb1 中输入了一些内容并将默认值替换为“Fred”。但是,即使我已经替换了当前值,“Bob”仍然每 2 秒输出一次。
如何解决此问题,以便 hello() 查看 tb1 的当前值,而不是启动时快照的内容?
我的最终目标是检测用户何时输入信息,因此我可以根据他们当前输入的内容按需显示/隐藏表单元素。如果有比不断检查值更简单的方法,而不是让客户继续填写信息以外的任何事情,请告诉我。
解决方案
您可以使用 onchange 属性并在文本更改时调用函数,而不是每 10 秒检查一次并节省一些资源。
就像是
<asp:Textbox id="myTextbox" runat="server" onChange="txtChanged" AutoPostBack="true"/>
然后在后面的代码中
public void txtChanged(object sender, EventArgs e)
{
//Get text
string text = ((TextBox)sender).Text;
Debug.WriteLines("Current value is: " + text);
}
您应该避免使用这种计时器方法来检测用户输入的原因有很多。
效率:无论用户在做什么,每 10 秒调用一次方法是低效的。
用户体验:当 Bob 必须额外等待 10 秒以更新表单时,这会造成糟糕的用户体验。
可维护性:它还降低了代码的可维护性,尤其是当这种计时器方法被极端使用时,因为接口和后面的代码之间的直接关联性较低。