C# 无法获取动态生成的文本框c的文本属性

C# 无法获取动态生成的文本框c的文本属性,c#,asp.net,typeof,dynamic-controls,servercontrols,C#,Asp.net,Typeof,Dynamic Controls,Servercontrols,我创建一个在服务器上运行的DIV,然后动态创建TextBox控件并将其添加到该DIV中。稍后,当我尝试读取DIV中每个TextBox的Text属性时,我无法获取控件 我如何做到这一点 在服务器上运行的DIV 获取DIV中每个文本框的值 以前的海报是正确的,除非在页面生命周期中足够早地创建文本框,否则您将无法访问文本框的文本属性 但是,实际发布的表单元素应该仍然存在于HTTP请求中。Request.Form[**TextBoxObjectHere**.UniqueID]应该返回表单post上文本框

我创建一个在服务器上运行的DIV,然后动态创建TextBox控件并将其添加到该DIV中。稍后,当我尝试读取DIV中每个TextBox的Text属性时,我无法获取控件

我如何做到这一点

在服务器上运行的DIV

获取DIV中每个文本框的值


以前的海报是正确的,除非在页面生命周期中足够早地创建文本框,否则您将无法访问文本框的文本属性


但是,实际发布的表单元素应该仍然存在于HTTP请求中。Request.Form[**TextBoxObjectHere**.UniqueID]应该返回表单post上文本框中的任何文本。

在哪一点添加文本框?在初始页面加载期间或以后?稍后在NextWizardStep时,我认为这将不起作用,尽管我不确定NextWizardStep何时发生在asp.net中从未执行过向导。由于asp.net页面生命周期要求,在页面加载后创建的控件非常棘手。更好的方法是在设计时ctrate所有您可能想要的,并使它们不可见。然后根据需要使它们可见。所以我唯一的选择是在95%的时间里只需要3-6个文本框时,用100个文本框来填充DOM?一点也不。您可以使用带有回发API的javascript实现这一点。我就是这么想的。您可以创建TextBox01到TextBox10,并使用一些状态来计算它们在上下文中的含义,这可能不是一个好主意。你可以做很多事情。您还可以为向导的每个步骤使用单独的页面。选项继续。。。
<div id="divBonusPercents" runat="server"></div>
 foreach (ListItem item in lbTeamsEOM.Items)
                        if (item.Selected)
                        {
                            // add controls for team bonus %
                            TextBox tbPercent = new TextBox();
                            tbPercent.Text = "15%";
                            tbPercent.ID = "tbPercent" + item.Value;
                            divBonusPercents.Controls.Add(tbPercent);
                        }     
List<string> lBonusPercent = new List<string>();
            foreach (Control c in divBonusPercents.Controls)
                if (c.GetType() == typeof(TextBox))
                    lBonusPercent.Add(((TextBox)c).Text);