Ps0a Labs

I take the right pills (.Net, Teatro,Web, Ciclismo)

Como recuperar os controles de uma página?

Recentemente precisei recuperar todos os controles de uma página Asp.Net para um projeto.
O problema é que propriedade Controls da página herda da Classe Control e como tal retorna apenas os controles diretamente abaixo dela. Nesta relação não estão incluídos os itens da Master Page ou dos User Controls.

A solução então é criar um método que atravesse recursivamente toda a hierarquia.

Ex.:

    protected override void Render(HtmlTextWriter writer)
    {
        base.Render(writer);
        ListControls(Page, writer);
    }

    private static void ListControls(Control control, HtmlTextWriter writer)
    {
        if (control.HasControls())
        {
            IEnumerator _i = control.Controls.GetEnumerator();
            while (_i.MoveNext()) ListControls(((Control)_i.Current), writer);
        }
        else
            writer.WriteLine("ID = {0}, ClientID = {1}
“,control.ID, control.ClientID); }
 

Enviar por e-mail. Hits para esta publicação: 141.

Deixe uma resposta.