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 中输入的文本?

4

2 回答 2

2

您始终可以使用Request.Form集合:

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

它将包含与当前请求一起发布的所有值,无论是否为服务器端控件。

于 2012-11-06T21:21:58.260 回答
2

生成的输入在转身(HTTP GET 然后 POST)后不会保持其值,因为它不是具有 ViewState 的 System.Web.UI.Control。所以用户输入的值在表单集合中,您可以尝试从那里获取它(Request.Form),但更简单的方法是在 Init(..) 中添加一个 TextBox。之后,应该在 POST 上加载文本框的 ViewState,您可以在其 Text 属性中访问用户的输入。

在初始化()中:

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

在 Button_Click 中:

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