当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

ASP.NET 2.0 MasterPages and FindControl()

  今天遇到这样一个问题, 在模板页中放置的一个服务器控件,竟然在调用引用该模板页的page中找不到。

  具体情况如下

  在模板页中有一控件:

  <asp:HyperLink ID="hylkShowFollowers" runat="server" Text="列表链接"></asp:HyperLink>

  有一个page,引用了这个模板页,在page_load中通过调用Master.FindControl("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 (Root.ID == Id)

  {

  return Root;

  }

  foreach (Control Ctl in Root.Controls)

  {

  Control FoundCtl = FindControlRecursive(Ctl, Id);

  if (FoundCtl != null)

  return FoundCtl;

  }

  return null;

  }

  调用方法:

  var hylkShowFollowers = FindControlRecursive(Master, "hylkShowFollowers") as Hyperlink;

  if(hylkShowFollowers != null)

  {   //加入自己的代码}

相关内容
赞助商链接