Partager via


Extension de fonctionnalité par héritage

Outre la création de contrôles utilisateur, vous pouvez recourir à l'héritage pour étendre la fonctionnalité de vos pages Web mobiles ASP.NET. Si vous créez une classe qui hérite d'une classe de contrôle mobile ASP.NET existante, vous pouvez ajouter une fonctionnalité en substituant les membres existants ou en créant des propriétés, méthodes et événements pour la classe.

Création d'une classe par héritage

L'exemple de code suivant montre une nouvelle classe nommée CarList qui hérite du contrôle mobile List et qui est spécialisée pour restituer des informations sur les automobiles. La classe CarList encapsule les informations nécessaires à une liaison à la liste d'objets 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);
        }
    }
}

Pour obtenir un exemple plus détaillé d'extension de fonctionnalité de votre contrôle par héritage, consultez les didacticiels Démarrage rapide pour les contrôles mobiles ASP.NET.

Déploiement d'une nouvelle classe

Pour utiliser cette classe d'exemple, compilez-la dans un assembly et placez-la dans le dossier Bin de l'application. L'exemple suivant montre comment enregistrer un assembly nommé MyCompany.CarList.dll. Vous inscrivez l'assembly sur une page à l'aide de la directive @ Register, en spécifiant une balise personnalisée.

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

Si votre contrôle hérité ne modifie pas les fonctionnalités de rendu de la classe parente, vous n'avez pas besoin d'écrire un adaptateur pour la classe. Dans l'exemple précédent, étant donné que chaque contrôle CarList est également un objet List, l'adaptateur assigné au contrôle List pour le navigateur actuel, tel que HtmlListAdapter, est utilisé automatiquement. Cependant, si vous voulez fournir un rendu spécialisé du contrôle CarList pour un périphérique spécifique, vous pouvez écrire un adaptateur et inscrire le mappage dans le fichier Web.config.

Voir aussi

Autres ressources

Ajout de nouveaux adaptateurs de périphérique et d'une prise en charge des périphériques
Création de contrôles mobiles personnalisés