Перебрать все элементы управления на веб-странице asp.net

Мне нужно пройти через все элементы управления на моей веб-странице asp.net и что-то сделать с элементом управления . В одном случае я делаю гигантскую строку из страницы и отправляю ее себе по электронной почте, а в другом случае я сохраняю все в файл cookie.

Проблема заключается в мастер-страницах и элементах с коллекциями элементов управления внутри них. Я хочу иметь возможность передавать Page в метод, а затем сделать этот метод достаточно универсальным, чтобы перебирать все элементы управления на самой внутренней странице содержимого и работать с ними. Я пробовал сделать это с помощью рекурсии, но моя рекурсия не завершена.

Я хочу передать объект Page в метод, чтобы этот метод проходил через все элементы управления на самой внутренней странице содержимого. Как я могу этого добиться?

    private static String controlToString(Control control)
{
    StringBuilder result = new StringBuilder();

    String controlID = String.Empty;

    Type type = null;

    foreach (Control c in control.Controls)
    {
        try
        {
            controlID = c.ID.ToString();

            if (c is IEditableTextControl)
            {
                result.Append(controlID + ": " + ((IEditableTextControl)c).Text);
                result.Append("<br />");
            }
            else if (c is ICheckBoxControl)
            {
                result.Append(controlID + ": " + ((ICheckBoxControl)c).Checked);
                result.Append("<br />");
            }
            else if (c is ListControl)
            {
                result.Append(controlID + ": " + ((ListControl)c).SelectedValue);
                result.Append("<br />");
            }
            else if (c.HasControls())
            {
                result.Append(controlToString(c));
            }

            //result.Append("<br />");
        }
        catch (Exception e)
        {

        }
    }

    return result.ToString();
}

Без Try / catch

Ссылка на объект не соответствует экземпляру объекта.

On line controlID = .....

6
задан MAW74656 23 November 2010 в 20:02
поделиться