2016-08-03 96 views
0

让说,我对ASP.NET网络表单TextBox控件的设置值

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。

现在我想获取更新的值,我该如何正确地做到这一点。

回答

1

把它包在一个不为回发

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> 
1

修改的Page_Load如下:

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

问题是这种“在ASP .Net每当你产生任何形式的回传,包括处理按钮点击等事件时,你都会使用全新的版本必须从头开始重建的页面类。您以前在服务器上构建页面所做的任何工作都没有了。这意味着运行整个页面生命周期,包括页面加载代码,而不仅仅是点击代码。

每次您在前端执行任何事件时,都会重新创建页面并再次调用页面加载方法,页面将实际重置。为了避免它,人们应该使用下面的代码

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