2012-11-06 32 views
1

在Page_Init,如果是回來後,我檢查是否被點擊了一個名爲Button1的按鈕,如果是這樣我添加了一個LiteralControl到一個名爲Panel1的面板:如何在回發時保留用戶輸入的文字控制?

Panel1.Controls.Add(new LiteralControl("Enter Code:<input type=\"text\" name=\"txtCode\"></td>")); 

正如你所看到的,它只是文本「輸入代碼:「後跟一個名爲txtCode的文本框。

我有第二個按鈕(Button2的),點擊後,我想檢索txtCode輸入的文字:

protected void Button2_Click(object sender, EventArgs e) 
    { 
     foreach (Control c in Panel1.Controls) 
     { 
      if (c is LiteralControl) ...     
     } 
    } 

我不知道如何做到這一點...我怎麼能獲取txtCode中輸入的文本?

回答

2

您可以隨時使用的Request.Form集合:

string txtCode = Request.Form["txtCode"]; 

它將包含無論是服務器端控件或不貼與當前請求的所有值。

+0

謝謝您的幫助。 – Administrateur

2

生成的輸入在轉身後(HTTP GET和POST)不會持久化它的值,因爲它不是具有ViewState的System.Web.UI.Control。所以用戶輸入的值是在表單集合中,你可以嘗試從那裏獲取(Request.Form),但更簡單的方法是在Init(..)中添加一個TextBox。之後,應該在POST上加載文本框的ViewState,並且可以在其Text屬性中訪問用戶的輸入。

在的init():

_MyTextBox = new TextBox(); 
panel1.Controls.Add(_MyTextBox); 

在Button_Click:

var value = _MyTextBox.Text ; 
+0

[+1]感謝您的幫助... – Administrateur

相關問題