Utilizzo dell'insieme Controls in una pagina Web ASP.NET
Aggiornamento: novembre 2007
La classe Control e le rispettive classi derivate (compresa la classe Page) espongono una proprietà Controls che restituisce un'istanza ControlCollection. Questa gerarchia consente di scorrere la struttura di controlli a livello di codice per eseguire la ricerca di controlli specifici in una pagina, nonché di verificare il tipo di controlli all'interno dell'insieme per accedere alle rispettive proprietà. Nell'esempio di codice riportato di seguito viene illustrato come scorrere la gerarchia di controlli della pagina per l'individuazione di istanze del controllo <asp:TextBox>, di cui ne esiste solo una.
Nota sulla sicurezza: |
---|
L'esempio include una casella di testo che accetta l'input dell'utente e rappresenta quindi una potenziale minaccia alla sicurezza. Per impostazione predefinita, le pagine Web ASP.NET verificano che l'input dell'utente non includa script o elementi HTML. Per ulteriori informazioni, vedere Cenni preliminari sugli attacchi tramite script. |
<%@ 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" >
<title>Using the Controls Collection in a Web Form</title>
<script language="vb" >
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" >
<table width="80%"
border="1"
cellpadding="1"
cellspacing="1">
<tr>
<td align="center" style="width:50%;">
<asp:TextBox id="MyTextBox"
text="Type something here"
/>
</td>
<td align="center" style="width:50%;">
<span id="myspan" > </span>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input id="changebtn"
type="submit"
onserverclick="changebtn_click"
value="move your text"
/>
</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" >
<title>Using the Controls Collection in a Web Form</title>
<script language="c#" >
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" >
<table width="80%"
border="1"
cellpadding="1"
cellspacing="1">
<tr>
<td align="center" style="width:50%;">
<asp:TextBox id="MyTextBox"
text="Type something here"
/>
</td>
<td align="center" style="width:50%;">
<span id="myspan" > </span>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input id="changebtn"
type="submit"
onserverclick="ChangeBtn_Click"
value="move your text"
/>
</td>
</tr>
</table>
</form>
</body>
</html>