доступ к элементам управления на странице aspx

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

Единственная проблема в том, что элементы управления ascx не возвращаются в коллекцию «Controls». Вместо этого мы получаем элементы управления в 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 на странице или, что еще лучше, другую коллекцию, содержащую оба типа?

Спасибо

Ганс


person user378199    schedule 28.06.2010    source источник


Ответы (2)


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

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

person millerjs    schedule 28.06.2010

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

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

person SAGExSDX    schedule 28.06.2010