di: Simone Moretti 21 Aprile 2010
Presentando le novità di ASP.NET 4.0, abbiamo accennato al fatto che è stata introdotta una nuova proprietà per i web server control che prende il nome di ClientIDMode. Questo articolo ha lo scopo di descrivere la proprietà ClientIDMode e di fornire degli esempi che servano a chiarirne l'utilizzo, con il fine di mostrare come identificare, finalmente senza ambiguità, i web server control negli script lato client.
In ASP.NET ogni web server control è rappresentato da un proprio markup, ad esempio, una casella di testo è rappresentata dal markup asp:TextBox. Affinché sia possibile rappresentare visivamente un qualsiasi controllo server in un browser è necessario trasformare il markup del controllo in un markup HTML comprensibile al browser. Ad esempio, l'elemento asp:TextBox viene trasformato nell'elemento input.
Ogni controllo server incluso in una web form deve possedere un identificatore che lo individua univocamente in modo tale che nel momento in qui questi viene rappresentato visivamente nella pagina non si vengono a creare conflitti con altri controlli presenti nella pagina stessa.
ASP.NET mette a disposizione un meccanismo per assicurarsi che questo avvenga ma fino alla versione 3.5 poteva risultare assai complicato predire il valore che avrebbe assunto l'identificativo di un controllo sul lato client e per riuscirvi si doveva ricorrere a stratagemmi vari. Con la versione 4 è stata introdotta una nuova proprietà che prende il nome di ClientIDMode che consente di indicare l'algoritmo di generazione dell'identificativo del controllo e conseguentemente di predire con estrema semplicità il valore che esso assumerà sul lato client.
I web server control hanno tre proprietà che aiutano a identificarli quali:
| Proprietà | Descrizione |
|---|---|
ID | rappresenta l'identificativo del controllo che viene specificato dal programmatore dichiarativamente nel markup del controllo o da codice |
ClientID | non può essere specificata dal programmatore ma viene generata a runtime dal .NetFramework. Serve a identificare univocamente la rappresentazione html del controllo server. Viene usata negli script lato client. Dalla versione 4 di ASP.NET possiamo decidere, attraverso la proprietà ClientIDMode, l'algoritmo di generazione di questa proprietà e quindi predire il suo valore |
UniqueID | anche questa non può essere specificata dal programmatore ma viene generata a runtime dal .NetFramework. Serve a identificare univocamente il controllo lato server. Viene usata raramente e solo lato server |
Queste tre proprietà a volte assumono lo stesso valore, altre volte assumono valori diversi e si può fare confusione su quando e come usarle.
Quando il controllo non si trova dentro ad altri controlli, allora ASP.NET usa il valore della proprietà ID per valorizzare anche le proprietà UniqueID e ClientID. In questo contesto la proprietà ClientIDMode non avrà alcun effetto. Pensiamo, ad esempio, ad una casella di testo dentro una pagina Web:
<asp:TextBox ID="TextBox1" runat="server" Text="Testo" />
Quando la pagina sarà visualizzata nel browser le tre proprietà assumeranno i seguenti identici valori:
| Proprietà | Vaolre |
|---|---|
ID | TextBox1 |
ClientID | TextBox1 |
UniqueID | TextBox1 |
La faccenda si fa più complicata quando il controllo si trova all'interno di una gerarchia di controlli. Vediamo le differenze.
Guida Windows Azure Code SnippetsLe migliori pratiche per far girare le applicazioni "in the cloud",... |
Guida ASP.NET MVC Best PracticesUn workflow dettagliato e ricco di suggerimenti pratici per... |
Guida ASP.NET Starter KitUn modo semplice per imparare ad utilizzare le tecnologie Microsoft... |
Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.
Iscriviti alla newsletter
|
|
Corso Progettazione database11 Maggio 2012 a Milano |
|
|
Amministratore di Reti Windows Server 200811 Giugno 2012 a Milano |
|
Nessun corso previsto |