从服务器端获取 TextBox 控件的设置值

Get Set values of TextBox Control from server side

假设我在 ASP.NET Webform

的页面加载上有这段代码
protected void Page_Load(object sender, EventArgs e)
{
    TextBox1.Text = "123";
}

这是我在 aspx 文件中的控件

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

如果我将文本框数据从 123 更改为 12548 或前端的任何内容,然后单击按钮 现在这是我在按钮点击事件背后的代码

protected void Button1_Click(object sender, EventArgs e)
{
    string s = TextBox1.Text;
}

现在 TextBox1.Text 我应该得到 12548 或更新的值,而不是我得到的 123,我已经在页面加载中设置了它。

现在我想获取更新后的值,请问应该怎样做才正确?

修改Page_Load如下:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostback)
    {
        TextBox1.Text = "123";
    }
}

用 NOT 包装它是回传

  protected void Page_Load(object sender, EventArgs e)
{ 
 if(!IsPostBack)
    {
      TextBox1.Text = "123";
    }
}

或完全删除它:

protected void Page_Load(object sender, EventArgs e)
{
  //not here
}

<asp:TextBox ID="TextBox1" Text="123" runat="server"></asp:TextBox>

问题是这样的“在 ASP.Net 中,每次您引起任何类型的回发,包括处理按钮点击等事件时,您都在使用页面的全新实例 class必须从头开始重建。您之前在服务器上构建页面所做的任何工作都消失了。这意味着 运行 整个页面生命周期,包括您的页面加载代码,而不仅仅是点击代码。

每次您在前端执行任何事件时,它都会重新创建页面并再次调用 pageload 方法,页面实际上会被重置。为避免这种情况,应使用以下代码

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostback)
        {
             //default code
        }
    }