доступ к элементам управления на странице ASPX - PullRequest
2 голосов
/ 28 июня 2010

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

Единственная проблема заключается в том, что элементы управления 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

Ответы [ 2 ]

1 голос
/ 29 июня 2010

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

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

1 голос
/ 28 июня 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...