di: Riccardo Di Nuzzo 07 Gennaio 2005
Microsoft Asp.Net introduce tra le tante novità l'utilizzo dei Web User Control (User Control nel testo di questo articolo). Un Web User Control è simile ad una normale Web Form e può contenere anch'esso uno dei tanti oggetti che Asp.Net ci mette a disposizione (datagrid, dropdownlist, panel, etc.). La sua utilità, è quella di poter essere caricato in una Web Form similmente a come si faceva in Asp classico con i file inclusi. Per chi li ha usati, in Asp si potevano creare dei file esterni contenenti HTML e/o script Asp e in questo modo si riusciva a "riciclare" più facilmente parti di codice uguali includendo lo stesso file in più pagine. I Web User Control, in sintesi, svolgono la stessa funzione.
Con uno User Control, insomma, possiamo riutilizzare facilmente il codice in esso contenuto. Per nostra fortuna, usare uno User Control o una normale Web Form è pressocché uguale, quindi non dobbiamo reimparare nulla. Possiamo trascinare in fase di design sulla form dello User Control tutti i server control dalla toolbox di cui abbiamo bisogno e abbiamo il codebehind che contiene il codice così come con una normale Web Form.
A differenza delle normali Web Form che hanno l'estensione .aspx, i Web User Control hanno l'estensione .ascx. Dopo averlo creato, per utilizzare un Web User Control, è obbligatorio caricarlo in una Web Form.
Per creare uno User Control, si può cliccare con il tasto destro sul progetto e aggiungere un nuovo elemento. Selezionate quindi la voce "Controllo utente Web" o "Web User Control":

Possiamo inserire uno User Control in una Web Form, in maniera dichiarativa:
<%@ Register tagprefix="DeRossi" Tagname="Login" Src="Login.ascx" %>
Nel codice della pagina aspx per visualizzare lo User Control avremo:
<DeRossi:Login id="mioLogin" runat="server"></DeRossi:Login>

Possiamo farlo anche in maniera programmatica, scrivendo direttamente il codice nella pagina di codebehind. Per chi non lo sapesse, in sintesi, il codebehind è una pagina con estensione .vb o .cs che contiene tutto il codice di programmazione legato in vario modo alla relativa pagina .aspx e permette così una migliore separazione tra HTML e codice.
Nell'esempio seguente ph è un oggetto di tipo placeholder presente sulla Web Form che usiamo come contenitore. Ricordiamo che un placeholder è uno dei Server Control messi a disposizione da Asp.Net e ci è utile come contenitore di altri server control:
Vb.Net
Dim mioLogin As Login = Me.LoadControl("Login.ascx")
ph.Controls.Add(mioLogin)
C#
Login mioLogin = (Login)this.LoadControl("Login.ascx");
ph.Controls.Add(mioLogin);
In questa maniera mioLogin è già un Web User Control di “tipo” Login. Se invece volete caricare genericamente un Web User Control, ad esempio nel caso abbiate più User Control nel vostro progetto da assegnare alla stessa variabile, potete anche scrivere:
Vb.Net
Dim mioLogin As Control = Me.LoadControl("Login.ascx")
C#
Control mioLogin = this.LoadControl("Login.ascx");
Ricordandovi però che se volete accedere ai membri (es. una proprietà pubblica “Titolo” che avete creato voi) dovrete provvedere al cast esplicito dello User Control:
Vb.Net
Ctype(mioLogin, Login).Titolo = “"Login applicazione"”
C#
((Login)mioLogin).Titolo = "Login applicazione";
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 |