【发布时间】:2011-04-03 08:26:24
【问题描述】:
示例代码:
var div = new HtmlGenericControl("div");
div.Controls.Add(new Literal() { ID = "litSomeLit" });
var lit = (Literal)div.FindControl("litSomeLit");
Assert.IsNotNull(lit);
此代码未通过断言,因为 lit 为空。调试显示 div.Controls 肯定包含 ID 为“litSomeLit”的文字。我的问题是“为什么?”和“有没有什么方法可以在不递归搜索 div.Controls[] 的情况下一次通过一个元素来获得对特定 ID 的控制?”
我这样做的原因是我的实际应用程序并不是那么简单——我正在编写的一个方法被赋予了一个复杂的控件,其中包含多个可能配置的子控件。我需要访问一个特定的控件向下几层(例如,ID 为“txtSpecificControl”的控件可能位于StartingControl.Controls[0].Controls[2].Controls[1].Controls[3])。通常我可以只做FindControl("txtSpecificControl"),但是当控件只是动态创建时(如上面的示例代码),这似乎不起作用。
【问题讨论】:
标签: c# asp.net web-controls dynamic findcontrol