Поделиться через


Использование коллекции элементов управления в веб-страницах ASP.NET

Обновлен: Ноябрь 2007

Класс Control и его производные классы (включая класс Page) предоставляют свойство Controls , возвращающее экземпляр ControlCollection. Такая иерархия позволяет выполнить процедуру обхода дерева элементов управления программным способом для поиска определенных элементов управления на странице, а также для проверки типа элементов управления в коллекции для получения доступа к их свойствам. В следующем примере кода показано, как совершить обход иерархии элемента управления страницы для поиска экземпляров элемента управления <asp:TextBox> (который только один).

20zys56y.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

В данном примере имеется текстовое поле для ввода пользовательских данных, которые представляют потенциальную угрозу безопасности. По умолчанию веб-страницы ASP.NET проверяют введенные пользователем данные на наличие сценариев и HTML-элементов. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.

<%@ Page Language="VB"  %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head id="head1" runat="server">

    <title>Using the Controls Collection in a Web Form</title>

    <script language="vb" runat="server">

        Private Sub ChangeBtn_Click(ByVal sender As Object, ByVal e As EventArgs)

            Dim c As Control
            Dim c2 As Control

            For Each c In Page.Controls
                If c.Controls.Count > 0 Then
                    For Each c2 In c.Controls
                        If c2.GetType.ToString = "System.Web.UI.WebControls.TextBox" Then
                            MySpan.InnerHtml = CType(c2, TextBox).Text
                            CType(c2, TextBox).Text = ""
                        End If
                    Next
                End If
            Next
        End Sub

</script>

</head>

<body>
  <form id="form1" runat="server">
    <table width="80%"
           border="1" 
           cellpadding="1" 
           cellspacing="1">
      <tr>
        <td align="center" style="width:50%;">
        <asp:TextBox id="MyTextBox" 
                     text="Type something here" 
                     runat="server"/>
        </td>
        <td align="center" style="width:50%;">
        <span id="myspan" runat="server">&nbsp;</span>
        </td>
      </tr>

      <tr>
        <td colspan="2" align="center">
        <input id="changebtn"
               type="submit"  
               onserverclick="changebtn_click" 
               value="move your text"
               runat="server" />
        </td>
      </tr>
    </table>
  </form>
</body>
</html>
<%@ Page Language="C#"  %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head id="head1" runat="server">
    <title>Using the Controls Collection in a Web Form</title>

<script language="c#" runat="server">

  private void ChangeBtn_Click(object sender, EventArgs e)
  {
     foreach(Control c in Page.Controls)
     {
       if (c.Controls.Count > 0)
       {
         foreach(Control c2 in c.Controls)
         {
            if (c2.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
            {
                myspan.InnerHtml = ((TextBox)c2).Text;
               ((TextBox)c2).Text = "";
            }
         }
      }
   }
}

</script>

</head>
<body>
  <form id="form1" runat="server">
    <table width="80%"
           border="1" 
           cellpadding="1" 
           cellspacing="1">
      <tr>
        <td align="center" style="width:50%;">
        <asp:TextBox id="MyTextBox" 
                     text="Type something here" 
                     runat="server"/>
        </td>
        <td align="center" style="width:50%;">
        <span id="myspan" runat="server">&nbsp;</span>
        </td>
      </tr>

      <tr>
        <td colspan="2" align="center">
        <input id="changebtn"
               type="submit"  
               onserverclick="ChangeBtn_Click" 
               value="move your text"
               runat="server" />
        </td>
      </tr>
    </table>
  </form>
</body>
</html>

См. также

Другие ресурсы

Доступ к элементам управления ASP.NET программными средствами