У меня есть Index.aspx, который несколько раз использует один пользовательский элемент управления «SocialElement» (с разными именами).Как получить информацию о других пользовательских элементах управления пользователя?
Я хочу обнаружить из этого пользовательского элемента управления «SocialElement» о том, сколько этого пользовательского элемента управления уже существует/загружается на странице индекса.
Ниже мой код:
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();
}
Однако, я увидел значение "числа" всегда равен нулю, когда каждый раз, когда SocialElement.ascx загружается Index.aspx.
Действительно ли я получаю общее количество SocialElement.ascx с "Page.Controls.OfType()"?
Если нет, то как? Спасибо.
'Page.Controls' только для управления, которые являются прямыми потомками' Page'. Вам нужен рекурсивный алгоритм для итерации над дочерними детьми и т. Д. – mason
Привет @mason, на моем веб-сайте я разрешаю Index.aspx использовать SocialElement.ascx, а другие не могут. – user3174976
Это не меняет то, что я сказал в своем комментарии. Элементы управления находятся в иерархии, а свойство '.Controls' возвращает только дочерние элементы этого элемента управления, поэтому вам нужно написать алгоритм, который будет переписывать их и искать все уровни иерархии. – mason