Introduzione alla creazione di Custom Control

di Daniele Bochicchio, in ASP.NET, C#, Custom Server Controls,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

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