如何保持用户输入在回传文字控制?(How to preserve user input in lit

2019-10-17 09:17发布

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

Answer 1:

您可以随时使用Request.Form集合:

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

它将包含无论是服务器端控件或不贴与当前请求的所有值。



Answer 2:

生成的输入不坚持它的价值转身后(HTTP GET然后POST),因为它是不是具有ViewState的System.Web.UI.Control。 这样用户输入值的形式收集,你可以尝试从那里(的Request.Form)得到它,但一个简单的方法是在初始化(..)添加文本框。 在此之后,文本框的ViewState的应在POST被加载,你可以在它的Text属性访问用户的输入。

在初始化():

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

在Button_Click:

var value = _MyTextBox.Text ;


文章来源: How to preserve user input in literal control on postback?