在Page_Init上,如果是回发,我检查是否单击了一个名为Button1的按钮,如果是,我将一个LiteralControl添加到一个名为Panel1的面板中:
Panel1.Controls.Add(new LiteralControl("Enter Code:<input type=\"text\" name=\"txtCode\"></td>"));
正如您所看到的,只是文本“输入代码:”后跟一个名为txtCode的TextBox。
我有第二个按钮(Button2),点击后,我想检索在txtCode中输入的文字:
protected void Button2_Click(object sender, EventArgs e)
{
foreach (Control c in Panel1.Controls)
{
if (c is LiteralControl) ...
}
}
我不知道怎么做...我怎样才能在txtCode中输入文字?
答案 0 :(得分:2)
您始终可以使用 Request.Form 集合:
string txtCode = Request.Form["txtCode"];
它将包含随当前请求发布的所有值,无论是否为服务器端控件。
答案 1 :(得分: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 ;