如何从用户控件中检索其他用户控件信息?

时间:2015-09-16 19:59:23

标签: c# asp.net

我有一个Index.aspx,它使用一个用户控件,#34; SocialElement"多次(使用不同的名称)。

我想从这个用户控件" SocialElement" about:在Index页面中已存在/加载了多少个用户控件。

以下是我的代码:

的Index.aspx

  <MyUserControl:SocialElement ID="Element" runat="server"/>

  <MyUserControl:SocialElement ID="Element1" runat="server"/>  

  <MyUserControl:SocialElement ID="Element2" runat="server"/>  

SocialElement.ascx背后的代码

 protected void Page_PreRender(object sender, EventArgs e)
{
   var listSocialShare = Page.Controls.OfType<SocialElement>();
   int number = listSocialShare.Count();
}

然而,我看到&#34;数字&#34;的价值每次Index.aspx加载SocialElement.ascx时,它总是为零。

我真的从&#34; Page.Controls.OfType()&#34;?

获得SocialElement.ascx的总数量

如果没有,怎么样?谢谢。

1 个答案:

答案 0 :(得分:0)

@mason是否需要递归寻找控件。您需要一种循环所有控件的方法:

protected void Page_PreRender(object sender, EventArgs e)
{
    var listSocialShare = FindControlsRecursive<SocialElement>(Page);
    int number = listSocialShare.Count();
}

private IEnumerable<T> FindControlsRecursive<T>(Control root)
{
    foreach (Control child in root.Controls)
    {
        if (child is T)
        {
            yield return (T)Convert.ChangeType(child, typeof(T));
        }

        if (child.Controls.Count > 0)
        {
            foreach (T c in FindControlsRecursive<T>(child))
            {
                yield return c;
            }
        }
    }
}
相关问题