2012-06-08 64 views
6

我正在用C#編寫ASP.NET項目。從asp獲取文本:textbox

UpdateUserInfo.aspx頁面包含文本框和按鈕。在pageLoad()方法中,我將一些文本設置到文本框中,當按鈕被選中時,我得到textbox的新值並將其寫入數據庫。

問題是即使我改變了文本框的值textbox.Text()方法返回文本框的舊值(「sometext」)並將其寫入數據庫。

此處的方法:

protected void Page_Load(object sender, EventArgs e) 
{ 
    textbox.text = "sometext"; 
} 

void Btn_Click(Object sender,EventArgs e) 
{ 
    String textbox_text = textbox.text();// this is still equals "somevalue", even I change the textbox value 
    writeToDB(textbox_text); 
} 

那麼,如何使文本框與someValue中初步顯現,但是當用戶更改該值的getText方法返回新的當前值,並寫入數據庫呢?

+1

你可以在這裏閱讀http://stackoverflow.com/questions/829249/what-does-ispostback-actually-mean – Ravia

回答

16
protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
    { 
     textbox.text = "sometext"; 
    } 
} 

回發上按一下按鈕設置textboxs文本屬性回到"somevalue",你要設置的值只有一次如上。

回發解釋說:

在ASP網站發展的背景下,回發是 HTTP POST另一個名字。在交互式網頁中,表單的內容被髮送到服務器以處理一些信息。之後,服務器 會將新頁面發送回瀏覽器。

這樣做是爲了驗證用於登錄的密碼,處理在線訂購表格 或客戶端計算機在其自己的 上無法完成的其他此類任務。這不會與瀏覽器上的按鈕所採取的刷新或後退動作相混淆。

Source

View State讀了也會理解這一切是如何結合在一起的幫助。

+0

你能解釋什麼是回傳嗎? – Nurlan

+0

那麼Btn_Click方法更新頁面,即。當點擊按鈕時,也會調用page_load是嗎? PostBack用於通知該按鈕已調用Page_load方法。我對嗎? – Nurlan

+1

按鈕單擊事件導致回發。頁面加載在頁面加載時被調用,無論是第一次還是由於回發。您的代碼行在頁面第一次爲所有後續回發加載時應用,因此您的新值永遠不會設置。將來,如果您只希望在頁面首次加載時運行一次代碼,而不是在回發時運行一次代碼,則必須將其放在'!Page.IsPostBack'塊中。 – dtsg

1

其實在頁面加載textbox是重新initilized

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!Page.IsPostBack) 
     { 
      textbox.text = "sometext"; 
     } 
    } 
    void Btn_Click(Object sender,EventArgs e) 
    { 
     String textbox_text = textbox.text; 
     writeToDB(textbox_text); 
    } 
1

請檢查網頁提交的頁面加載事件....

2

試試這個:

If (!IsPostBack) 
{ 
textbox.text = "sometext"; 
}