#625 - Introduzione alla creazione di Custom Control

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:

<%@ 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.

Nota: Questo script contiene un allegato.


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC