2010-06-28 7 views
2

У нас есть код, который предназначен для создания пары элементов управления ключом/значением на странице веб-форм ASP.NET и их значений. Мы используем сбор и рекурсию «Controls» для создания этой пары ключ/значение.Доступ к элементам управления на странице aspx

Единственная проблема заключается в том, что элементы управления ascx, похоже, не возвращаются в коллекцию «Элементы управления». Вместо этого мы получаем элементы управления ascx.

Нечто подобное следующему коду:

protected override void OnLoad(EventArgs e) 
{ 
    GetControls(this); 
} 
protected void GetControls(System.Web.UI.Control ctl) 
{ 
    foreach (Control subCtl in ctl.Controls) 
    { 
     GetControls(subCtl); 

     string value; 
     if (GetValueFromControl(subCtl, out value)) 
     { 
       _ControlValues.Add(subCtl.ClientID, value); 
     } 
    } 
} 

subCtl никогда управления ASCX. Есть ли способ получить список элементов управления ascx на странице или, тем не менее, другую коллекцию, содержащую оба типа?

Благодаря

Hans

ответ

1

Элементы управления .ascx отображаются в коллекции элементов управления.

Что касается вашего кода, интересно, возможно, это проблема с функцией GetValueFromControl - возможно, она не работает правильно для элементов управления .ascx или независимо от того, какое значение вы ищете? Или, возможно, эквивалентная функция рекурсии в вашем реальном коде только добавляет листинговые узлы в _ControlValues ​​и пропускает узлы с детьми?

+0

ура думаю, что у меня это сейчас – user378199

1

Насколько я знаю, управление ASCX включены в Controls коллекции.

Я сделал класс, наследующий от System.Web.UI.WebPage, который будет проходить через все элементы управления в this.Controls, и он включает в себя все классы ASCX.

Смежные вопросы