1

Page_Initで、ポストバックの場合、Button1というボタンがクリックされたかどうかを確認します。クリックされた場合は、Panel1というパネルにLiteralControlを追加します。

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

ご覧のとおり、「Enter Code:」というテキストの後に、txtCodeというTextBoxが続きます。

2番目のボタン(Button2)があり、クリックすると、txtCodeに入力されたテキストを取得したいと思います。

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

これを行う方法がわかりません...txtCodeに入力されたテキストを取得するにはどうすればよいですか?

4

2 に答える 2

2

Request.Formコレクションはいつでも使用できます。

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

サーバー側のコントロールであるかどうかに関係なく、現在のリクエストで投稿されたすべての値が含まれます。

于 2012-11-06T21:21:58.260 に答える
2

生成された入力は、ViewState を持つ System.Web.UI.Control ではないため、ターンアラウンド (HTTP GET と POST) 後にその値を保持しません。したがって、ユーザーが入力する値はフォーム コレクションにあり、そこから取得することができます (Request.Form) が、Init(..) に TextBox を追加するのが簡単な方法です。その後、テキスト ボックスの ViewState を POST でロードする必要があり、その Text プロパティでユーザーの入力にアクセスできます。

Init():

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

Button_Click で:

var value = _MyTextBox.Text ;
于 2012-11-06T21:30:20.690 に答える