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的当前值,而不是启动时快照的内容?
我的最终目标是检测用户何时输入信息,因此我可以根据需要显示/隐藏表单元素,具体取决于他们当前正在输入的内容。如果有比在不让客户做任何事情(而不是继续填写信息)的情况下不断检查值更简单的方法,请告诉我。
答案 0 :(得分:1)
您可以使用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不得不等待额外的十秒钟来更新表单时,这会带来糟糕的用户体验。
可维护性:这也使代码的可维护性降低,尤其是在采用这种计时器方法时,因为接口与背后的代码之间的直接关联较少。