Win*_*-10 0 .net vb.net asp.net master-pages
我正在使用vb.net主页,而.net正在将ctl00 $ CPHContent $和ctl00_CPHContent_放在控件ID和控件名之前.
我试图使用findControl来寻找我的控件,但它没有找到控件.
任何想法或建议.....我不能使用JavaScript来找到解决方案
您看到的ID生成是因为您的控件位于另一个实现的控件内INamingContainer.这样做的目的是允许模板控件 - 例如,数据网格的每一行都可能有一个ID为"TextBox1"的TextBox.显然,所有文本框都不能具有相同的ID - 因此DataGrid对这些控件的ID进行了前缀限定.
大多数具有Controls集合的Asp.Net控件都将实现INamingContainer(例如Panel).
INamingContainer虽然不妨碍功能FindControl.例如,您仍然可以从上面的示例中搜索每个DataGrid行中的"TextBox1".
问题可能是你可能没有调用FindControl()正确的容器(Page.FindControl不是递归的 - 它只是在它自己的Controls集合中直接搜索控件.)
如果你需要一个递归版本FindControl(),我把代码放在这个旧的答案中.