C# 如何检测用户更改表单数据?

C# 如何检测用户更改表单数据?,c#,asp.net,timer,C#,Asp.net,Timer,ASPX: 我有一个计时器,它会在页面开始时每2秒运行hello()。假设tb1有一个默认值“Bob”,它将每2秒正确输出一次。假设我在tb1中键入了一些内容,并将默认值替换为“Fred”。然而,即使我已经替换了当前值,“Bob”仍然每2秒输出一次 如何修复此问题,以便hello()查看tb1的当前值,而不是启动时的快照 我的最终目标是检测用户何时键入信息,这样我就可以根据用户当前键入的内容按需显示/隐藏表单元素。如果有比不让客户继续填写信息而不断检查值更简单的方法,请让我知道 您可以使用on

ASPX:

我有一个计时器,它会在页面开始时每2秒运行hello()。假设tb1有一个默认值“Bob”,它将每2秒正确输出一次。假设我在tb1中键入了一些内容,并将默认值替换为“Fred”。然而,即使我已经替换了当前值,“Bob”仍然每2秒输出一次

如何修复此问题,以便hello()查看tb1的当前值,而不是启动时的快照



我的最终目标是检测用户何时键入信息,这样我就可以根据用户当前键入的内容按需显示/隐藏表单元素。如果有比不让客户继续填写信息而不断检查值更简单的方法,请让我知道

您可以使用onchange属性,在文本更改时调用函数,而不是每10秒检查一次,这样可以节省一些资源

差不多

public hello(){
    Debug.WriteLines("Current value is: " + tb1.Value);
}
您应该避免使用这种计时器方法来检测用户输入,有几个原因

效率:无论用户在做什么,每10秒调用一次方法都是低效的

用户体验:当Bob不得不额外等待10秒钟表单更新时,它会造成糟糕的用户体验


可维护性:这也会降低代码的可维护性,尤其是当这种计时器方法被采用到极致时,因为界面和背后的代码之间没有那么直接的关联。

考虑添加解释,为什么OP使用服务器端计时器的方法没有意义来完成这个答案。我添加了一些解释。你还有什么要补充的吗?谢谢你的可靠回答!当文本框被更改时,我得到一个错误:“'txtChanged'未定义”我确信这是一个范围问题,所以我将函数放在了错误的区域。我应该把那个片段放在哪里?它当前与我的页面加载代码段处于相同的作用域级别。我在网上搜索了几个小时,但找不到任何可以理解的东西
public hello(){
    Debug.WriteLines("Current value is: " + tb1.Value);
}
<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);
}