Introduzione ai Web User Control

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":

screenshot

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>

screenshot

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";

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto