C# 使用ASP.NET从输入类型文本中检索键入的新值

C# 使用ASP.NET从输入类型文本中检索键入的新值,c#,asp.net,.net,webforms,C#,Asp.net,.net,Webforms,我在检索文本类型的输入元素时遇到了问题,以前在某些C#代码中设置了该元素,例如: foo.aspx中的HTML元素定义为: <input type="text" class="form-control" id="name" runat="server" /> 当has\u something为真时,如果用户在输入中输入Y的值,那么现在很重要,当我这样做时(代码也来自foo.aspx.cs): 我没有在输入id=name上获取当前值,比如说,我输入了Y,而是获取了在Page\u Lo

我在检索文本类型的输入元素时遇到了问题,以前在某些C#代码中设置了该元素,例如:

foo.aspx中的HTML元素定义为:

<input type="text" class="form-control" id="name" runat="server" />
has\u something
为真时,如果用户在输入中输入Y的值,那么现在很重要,当我这样做时(代码也来自foo.aspx.cs):

我没有在输入id=name上获取当前值,比如说,我输入了
Y
,而是获取了在
Page\u Load()
时间设置的旧值

我错过了什么?我应该使用Javascript来设置值吗?
如何解决此问题?

我已编辑了原始回复以更正答案

当页面单击按钮执行回发时,页面加载函数中的代码正在执行

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            bool has_something = ...;
            if (has_something)
                name.Value = "X";
        }
    }

我觉得你很困惑,它是一个
System.Web.UI.HtmlControls.HtmlInputText
而不是
System.Windows.Forms.TextBox
。没有
文本
属性…确切地说。我也刚刚发现我的错误:)我很累
  protected void go_Click(object sender, EventArgs e)
        {
            if (!IsValid)
                return;

            string Name = name.Value;
            Debug.WriteLine(string.Format("name = {0}", Name)); //X
       }
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            bool has_something = ...;
            if (has_something)
                name.Value = "X";
        }
    }