Composite Custom Control per ASP.NET

di Daniele Bochicchio, in ASP.NET 2.0, Custom Control,

Un composite custom control è un controllo composto dall'unione di più controlli, che partecipano insieme alla creazione di una funzionalità che viene incapsulata all'interno di una classe, così da poter essere riutilizzare in diversi scenari.
L'obiettivo, in tutti questi casi, è quello di creare qualcosa che possa essere sfruttato in più contesti, spesso non legandosi al progetto corrente, ma potendo portarne il funzionamento in più ambiti.

Quando si crea un custom control di questo tipo, si può sfruttare come base la classe CompositeControl del namespace System.Web.UI.WebControls, ma una soluzione che certamente consente un maggior controllo è l'utilizzo della classe Control.
E' sempre e comunque necessario effettuare l'override del metodo CreateChildControls, perchè è in questo metodo che vanno creati i controlli che dovranno essere utilizzati all'interno del nostro custom control.

In questo caso, si è optato per la creazione di un semplice custom control, composto da una TextBox e da una Label che contiene un testo descrittivo, così che sia possibile inserire questa combinazione senza necessità di farlo ogni volta manualmente.

using System;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ASPItalia.com.Web.UI.Controls
{
  public class LabeledTextBox: Control
  {
    private string _description;

    public string Description
    {
      get { return _description; }
      set { _description = value; }
    }

    public string Text
    {
      get
      {
        // si assicura che i controlli vengano creati se non lo sono già stati
        EnsureChildControls();
        return ((TextBox)Controls[2]).Text;
      }

      set
      {
        EnsureChildControls();
        ((TextBox)Controls[2]).Text = value;
      }
    }

    protected override void CreateChildControls()
    {
      // descrizione
      Label labelText = new Label();
      labelText.Text = Description;

      Controls.Add(labelText);

      // spazio
      Controls.Add(new LiteralControl(": "));

      // TextBox
      TextBox box = new TextBox();

      Controls.Add(box);
    }
  }
}

Dopo aver registrato il custom control, si può utilizzarlo in questo modo:

<aspitalia:LabeledTextBox runat="server" Description="Nome" ID="FirstName" />

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

Nessuna risorsa collegata

I più letti di oggi