我为页面控件编写了一个小扩展方法,以递归搜索控件。但我得到“对象引用未设置为对象的实例”异常。
似乎 page.Controls 只有 1 个控件,在这个控件上我设置了这个异常。
有人有什么想法吗?
这是代码:
public static Control FindControlRecursive(this Page page, string id)
{
return Execute(page, id);
}
private static Control Execute(Control root, string id)
{
if (root.ID.Equals(id))
return root;
ControlCollection controls = root.Controls;
foreach (Control ctrl in controls)
{
Control FoundControl = Execute(ctrl, id);
if (FoundControl != null)
return FoundControl;
}
return null;
}
}
更新 现在我有另一个错误:发生错误:索引超出范围。必须是非负数且小于集合的大小。参数名称:索引...
但这一个在循环中间的某个地方抛出。