I controlli lato server di ASP.NET 2.0

di: Giuseppe Marchi     05 Settembre 2007

Creare un controllo web personalizzato

Come la stragrande maggioranza delle funzionalità del sistema su cui si basa ASP.NET, è possibile estendere il set di controlli web pre-esistenti sviluppando dei controlli personalizzati in grado di soddisfare quelle che risultano essere le esigenze dell'applicazione web che stiamo costruendo.

È possibile costruire sia degli HTML Server Controls, sia dei Web Server Controls, il punto però sta nel fatto che i primi sono stati creati solamente per mappare i tag presenti nelle specifiche dell'HTML e non hanno le possibilità che invece offrono i Web Server Controls.

Nell'esempio che affronteremo, esamineremo i passi necessari per implementare un semplice controllo Web personalizzato per creare dei link che aprano delle finestre pop-up. L'esempio è molto semplice, ma permette di imparare bene alcuni concetti di base riguardanti questo tipo di personalizzazioni.

La prima cosa da fare, è creare una nuova classe con uno dei lunguaggi compatibili con il .NET Framework e far si che questa erediti dalla classe WebControl. Questa è la classe base di tutti i controlli Web lato server ed è la classe che fornisce le implementazioni della maggior parte dei metodi di base utili al corretto funzionamento del nostro controllo.

Ereditando da WebControl infatti, non dobbiamo preoccuparci di gestire il postback o di implementare la lettura e il salvataggio dei valori dal ViewState, poiché troviamo già tutto pronto; se invece, vogliamo personalizzare la gestione di un particolare comportamento oppure una delle fasi di vita del nostro controllo, non dobbiamo far altro che sovrascrive le proprietà o i metodi che vi vengono messi a disposizione.

Definizione di un controllo personalizzato

namespace Peppe.Web.UI.WebControls
{
  public class PopUpLink : WebControl
  {
    //...
  }
}

Le proprietà e i metodi che sovrascriveremo, saranno legati a due compiti ben diversi:

  • la definizione del tag HTML di base - perché comunque un web control deve produrre del codice HTML e nel nostro caso, deve rappresentare un tipo di elemento ben preciso: il tag <a>;
  • il rendering degli attributi e dei contenuti.

Per quanto riguarda il primo obbligo, dobbiamo effettuare l'override della proprietà TagKey (che ha solamente l'accessore get) in modo tale che ritorni, ogni qualvolta venga richiamata, il valore "A" dell'enumerazione HtmlTextWriterTag, che rappresenta appunto l'elemento HTML <a>.

protected override HtmlTextWriterTag TagKey
{
  get { return HtmlTextWriterTag.A; }
}

In questa maniera, il nostro controllo web, una volta renderizzato dal motore di ASP.NET, produrrà un elemento <a>.

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

Amministratore di Reti Windows Server 2008

20 Febbraio 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto