我有一个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的总数量如果没有,怎么样?谢谢。
答案 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;
}
}
}
}