Condividi tramite


Estensione di funzionalità mediante l'ereditarietà

Aggiornamento: novembre 2007

Oltre a creare controlli utente, è possibile utilizzare l'ereditarietà per estendere la funzionalità delle pagine Web ASP.NET per dispositivi mobili. Se si crea una classe che eredita da una classe esistente di controlli mobili ASP.NET, è possibile aggiungere ulteriori funzionalità eseguendo l'override dei membri esistenti o creando proprietà, metodi ed eventi nuovi per la classe.

Creazione di una classe mediante l'ereditarietà

Nell'esempio di codice riportato di seguito viene illustrata una nuova classe denominata CarList che eredita dal controllo mobile List ed è specializzata per il rendering di informazioni sulle automobili. La classe CarList include le informazioni necessarie per l'associazione a un elenco di oggetti Car.

using System.Web.UI.MobileControls;

namespace myCompany.MobileControls
{
    class CarList : List
    {
        // Override OnInit, and set the DataValueField property
        // to the correct property of a Car object to use as the 
        // value of each list item.
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            this.DataValueField = "id";
        }
    
        // Override OnItemDataBind, and set the list item display 
        // text to a rich expression, containing the year, make, 
        // and model of the car.
        protected override void OnItemDataBind(ListDataBindEventArgs e)
        {
            base.OnItemDataBind(e);

            CarInfo car = (Car)e.DataItem;
            e.ListItem.Text = 
              String.Format("{0}{1}{2}", car.Year, car.Make, car.Model);
        }
    }
}

Per una descrizione più dettagliata dell'estensione delle funzionalità del controllo mediante l'ereditarietà, vedere le esercitazioni delle Guide rapide per controlli mobili ASP.NET.

Distribuzione di una nuova classe

Per utilizzare la classe di questo esempio, compilare la classe in un assembly e inserirla nella cartella Bin dell'applicazione. Nell'esempio riportato di seguito viene illustrato come registrare un assembly denominato MyCompany.CarList.dll. Per registrare l'assembly in una pagina, utilizzare la direttiva @ Register specificando un tag personalizzato.

<%-- Register the myCompany.MobileControls namespace. --%>
<%@ Register TagPrefix="car" Namespace="myCompany.MobileControls" 
    Assembly="myCompany.CarList" %>
    // More code.
    <%-- Control declaration --%>
    <car:CarList id="myCarList"  />

Se il controllo ereditato non modifica la funzionalità di rendering della classe padre, non è necessario scrivere un adattatore per la classe. Poiché nell'esempio precedente il controllo CarList è anche un oggetto List, viene utilizzato automaticamente l'adattatore assegnato al controllo List per il browser corrente, ad esempio HtmlListAdapter. Se tuttavia si desidera disporre di un rendering specializzato del controllo CarList per un dispositivo specifico, è possibile scrivere un adattatore e registrare il mapping nel file Web.config.

Vedere anche

Altre risorse

Aggiunta di nuovi adattatori di dispositivo e supporto per dispositivi

Creazione di controlli mobili personalizzati