Gerarchia dei controlli
Quando ASP.NET carica in memoria i controlli server, non li inserisce in un unico elenco casualmente, ma secondo un ordine gerarchico
Ogni controllo server possiede un insieme di controlli in grado di contenerne di aggiuntivi
La pagina ASP.NET stessa in effetti è un controllo server, o meglio un controllo sever page
Codice di esempio:
<table id="" tblPlenty" runat="server">
<tr id="RowPlentyHeading" runat"server">
<td colspan="3" id"CellPlentyTitle" runat"server"></td>
</tr>
<tr id="RowPlentyHeading" runat"server">
<td id"CellPlentyDetail" runat"server"></td>
<td id"CellPlentyAmount" runat"server"></td>
<td id"CellPlentyUnit" runat"server"></td>
<td id"CellPlentyDescription" runat"server"></td>
</tr>
</table>
Si presume che l'intero codice sia contenuto in un a pagina web . Il livello più alto della gerarchia è quindi un controllo page.
Facendo riferimento al codice di esempio prima descritto ci veniamo a trovare in una situazione simile.
- Il controllo server page contiene il controllo HTML table denominato tblPlenty
- L'insieme dei controlli nel controllo server HTML table contiene
controlli server :
- RowPlentyHeading
- RowPlentyDetail
- Il controlloo serve denominato RowPlentyHeading contiene un elemento nell'insieme di controlli denominato CellPlentyTitle
- Il controllo server denominato RowplentyDetail, contiene tre elementi nell'insieme dei controlli denominati CellPlentyAmount, CellPlentyUnit e CellPlentyDescription
In questo esempio si avrebbe la seguente sequenza di rendering richiesta da ASP.NET
- Il controllo Page chiede al controllo tblPlenty di effettuare il rendering
- Il controllo tblPlenty chiede di eseguire il rendering ai
controlli subordinati
- RowPlentyHeading
- RowPlentyDetail
- A loro volta i controlli RowPlentyHeading e RowPlentyDetail chiederebbero ai rispettivi controlli subordinati di effettuare il rendering
Il codice di programmazione è in grado di :
- manipolare controlli server
- crearne di nuovi
- eliminare quelli non appropriati ad una particolare richiesta
L'intero ciclo di vita di una pagina :
- lettura
- esecuzione
- trasmissione
di una pagina ASP.NET, richiede poche frazioni di secondo. In questo piccolo lasso di tempo ASP.NET bombarda ogni singolo controllo server con una serie di messaggi definiti eventi.
Per ogni evento, un determinato controllo server potrebbe possedere oppure no un gestore evento corrispondente ( ovvero un tipo di funzione o subroutines)
Se è presente un gestore, ASP.NET lo eseguirà in qualsiasi momento si verifica l'evento ad esso associato.
![]() |