从服务器端获取TextBox Control的Set值

时间:2016-08-03 11:09:59

标签: c# asp.net webforms code-behind

假设我在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.

现在我想获得更新的价值,我怎么能以正确的方式做到。

3 个答案:

答案 0 :(得分:1)

按如下方式修改Page_Load:

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

答案 1 :(得分:1)

将其包裹在NOT is Postback

  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>

答案 2 :(得分:0)

问题在于“在ASP.Net中,每当您进行任何类型的回发,包括处理按钮点击等事件时,您都在使用必须从头开始重建的页面类的全新实例。你以前在服务器上构建页面的工作已经完成。这意味着要运行整个页面生命周期,包括你的页面加载代码,而不仅仅是点击代码。

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

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