2014-01-03 3 views
1

Мне нужно перечислить все элементы управления на странице. Я делаю это как такДополнительные элементы управления ASP.net на странице

protected void listControls(Control c) 
{ 
    if (c.HasControls()) 
    { 
     tb_message.Text += String.Format("{0}{1}", c.ID, System.Environment.NewLine); 
     foreach (Control control in c.Controls) 
     { 
      tb_message.Text += String.Format("{0}{1}", control.ID, System.Environment.NewLine); 
      listControls(control); 
     } 
    } 
} 

Почему выход, как это (+ две дополнительные пустые строки в начале)

form1 

    tb_life_cycle 

    tb_message 

    btn_button 

Если у меня есть только следующие элементы управления: tb_life_cycle, tb_message, btn_button + форма формы1? Спасибо

+0

У вас есть те же элементы управления, что и на выходе, в качестве элементов управления, которые, как вы говорите, в ожидаемых результатах. [Повторяющийся вопрос] (http://stackoverflow.com/questions/7362482/c-sharp-get-all-web-controls-on-page)? – crunchy

+0

@ пользователь2936347 непонятно, что вы хотите в выходе? –

+0

Он, вероятно, говорит о «(+ дополнительные две пустые строки в начале)» –

ответ

0

ASP.NET Web Forms добавляет несколько элементов управления в коллекцию Control, чтобы он мог визуализировать такие вещи, как обычный текст (определенный как часть конструктора ASPX.) Вероятно, вы обнаружите, что дополнительные элементы управления, которыми вы не были ожидая, что часть вашего вывода будет LiteralControl сгенерирована ASP.NET.

Попытайтесь также указать Type каждого элемента управления как часть вашего вывода.

protected void listControls(Control c) { 
    if (c.HasControls()) { 
     litText.Text += String.Format("{0}{1}{2}", c.GetType(), c.ID, System.Environment.NewLine); 
     foreach (Control control in c.Controls) { 
      litText.Text += String.Format("{0}{1}{2}", control.GetType(), control.ID, System.Environment.NewLine); 
      listControls(control); 
     } 
    } 
} 
Смежные вопросы