2016-08-03 95 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 
     } 
    } 
相關問題