Un Custom Control rispetto ad uno User Control ha il vantaggio di poter essere riutilizzabile più facilmente in progetti differenti, oltre a poter essere distribuito come un semplice assembly da caricare in \bin\ per essere utilizzato.
Concettualmente un Custom Control non si discosta molto da uno User Control, ma rispetto a quest'ultimo, essendo una classe composta da codice, permette di sfruttare meglio ASP.NET e favorisce, al tempo stesso, un migliore riutilizzo del codice.
In questo esempio, il primo di una serie dedicato ai Custom Control, vedremo come creare un semplice WebControl che mostra la data e l'ora attuale, con una proprietà per impostare il testo.
Dobbiamo quindi creare una nuova classe con questo testo alll'interno:
using System; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel; namespace ASPItalia.WebControls { // il nome del control coincide con quello della classe [ToolboxData("<{0}:CurrentTime runat=server></{0}:CurrentTime>")] public class CurrentTime : System.Web.UI.WebControls.WebControl { private string text = "Ora corrente"; public string Text { set { text = value; } } // funzione per scrivere l'output del control protected override void Render(HtmlTextWriter output) { string ftext = String.Format("{2}: {0} del {1}", DateTime.Now.ToShortTimeString(), DateTime.Now.ToShortDateString(), text); output.Write(ftext); } } } La funzione Render accetta un HtmlTextWriter che è poi una classe particolare che HttpRuntime carica per ogni richiesta e che permette al control di generare l'Output. E' in questa funzione che andremo a generare il codice HTML che il nostro Custom Control invierà al browser. Una volta compilata la classe, per essere utilizzata va registata in ogni pagina, in questo modo: [code lang="aspx"]<%@ Register TagPrefix="aspitalia" Namespace="ASPItalia.WebControls" Assembly="aspitalia.webcontrols"%>
E va quindi utilizzata così:
<aspitalia:CurrentTime runat="server"/>
Avremo modo di approfondire meglio l'argomento nei prossimi script.
E' presente un allegato con il codice sorgente e tutto quanto serve per compilare e testare questo esempio.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Eseguire script pre e post esecuzione di un workflow di GitHub
- Creare una libreria CSS universale: Cards
- Migliorare l'organizzazione delle risorse con Azure Policy