今天遇到这样一个问题 在模板页中放置的一个服务器控件竟然在调用引用该模板页的page中找不到
具体情况如下
在模板页中有一控件:
<asp:HyperLink ID=hylkShowFollowers runat=server Text=列表链接></asp:HyperLink>
有一个page引用了这个模板页在page_load中通过调用MasterFindControl(hylkShowFollowers) 返回为空
查了一些资料之后引起这个问题的原因是由于引用了masterpage之后呢控件的布局发生了改变需要通过递归调用
才能找到该控件
代码如下:
/// <summary>
/// Finds a Control recursively Note finds the first match and exists
/// </summary>
/// <param name=ContainerCtl></param>
/// <param name=IdToFind></param>
/// <returns></returns>
public static Control FindControlRecursive(Control Root string Id)
{
if (RootID == Id)
{
return Root;
}
foreach (Control Ctl in RootControls)
{
Control FoundCtl = FindControlRecursive(Ctl Id);
if (FoundCtl != null)
return FoundCtl;
}
return null;
}
调用方法:
var hylkShowFollowers = FindControlRecursive(Master hylkShowFollowers) as Hyperlink;
if(hylkShowFollowers != null)
{ //加入自己的代码}