在 asp.net 页面的 Literal 中查找动态创建的控件

Find dynamically created controls inside Literal in asp.net page

以下是我的代码

-- .aspx 文件

<div id="testDiv" runat="server"></div>

-- .aspx.cs 文件

Literal lit1 = new Literal();
lit1.Text = "<table class='allocTable'>";
lit1.Text += "<tr><td><input type='text' runat='server' id='testbox1'></input></td></tr>";
... some other controls <tr><td>...
lit1.Text += "</table>"
testDiv.Controls.Add(lit1);

现在如何在 .aspx.cs 文件中找到 testbox1?我在 testDiv 和 placeHolder 上使用了 FindControl 但它 returns null.

似乎文本框还没有添加到页面控件中,但它们刚刚呈现。

如果要返回 post 上文本框的值,可以使用 Request.Form["testbox1"]。

如果您不想使用 "real" 服务器控件,您可以在 aspx 文件中使用 asp:Panel 而不是 div。 在 asp.cs Init 或 Load 方法中,您可以将 HtmlTable 添加到 Panel.Controls collection,将 HtmlTableRow(s) 添加到 HtmlTable.Rows collection 和 HtmlTableCell(s) ) 到 HtmlTableRow.Cells collection。

当您创建要添加到 Cell.Controls collection 的输入控件时,您可以将它们存储在私有成员变量中。