Partager via


Procédure pas à pas : Ajout de prise en charge des périphériques

ASP.NET dispose d'un modèle d'extensibilité qui vous permet d'ajouter une prise en charge des nouveaux périphériques mobiles. Cette prise en charge peut être ajoutée de deux manières.

Étant donné que différents périphériques partagent souvent les mêmes navigateurs, vous devriez être capable de fournir la prise en charge du périphérique sans un effort de développement considérable, en ajoutant les informations relatives au périphérique au fichier Web.config file pour l'application ou au fichier Machine.config pour le serveur. Le fichier de configuration Machine.config par défaut est stocké à l'emplacement suivant :

systemroot\Microsoft.NET\Framework\numéro_version\CONFIG

Ce fichier contient un élément <filter> pour chaque navigateur pris en charge. Par exemple, la section qui détecte Microsoft Internet Explorer pour Pocket PC commence par « <!-- Pocket IE --> ». Dans cette section se trouve un élément <case> possédant un attribut match. L'attribut match est défini selon l'agent utilisateur envoyé à partir du périphérique.

S'il n'y a pas de correspondance pour votre périphérique dans le fichier Machine.config, vous pouvez ajouter le rendu spécifique au périphérique en modifiant les fichiers d'adaptateurs. Les adaptateurs de périphérique sont disponibles comme fichiers sources C# (.cs) fournis avec le produit. Ces fichiers d'adaptateurs de périphérique peuvent être recompilés pour ajouter une prise en charge supplémentaire des périphériques.

Les fichiers d'adaptateurs sont chargés du rendu réel d'un contrôle particulier. Pour chaque contrôle mobile, il existe un adaptateur HTML, WML et cHTML correspondant.

Remarque   Dans certains cas, les adaptateurs cHTML héritent de l'adaptateur HTML ; il n'y a donc pas toujours une correspondance biunivoque avec les contrôles. Pour plus d'informations, consultez Code d'adaptateur de périphérique.

Essayez systématiquement d'ajouter les informations aux fichiers de configuration avant de modifier les fichiers d'adaptateurs ; il est beaucoup plus simple d'ajouter des entrées que de créer un nouveau jeu d'adaptateurs. Si vous devez créer un nouveau jeu d'adaptateurs, il vous faudra créer des entrées dans les fichiers Machine.config et Web.config de sorte que les adaptateurs puissent identifier le nouveau périphérique.

La procédure pas à pas suivante est conçue pour vous aider à démarrer dans la création de nouveaux adaptateurs.

Utilisation de l'adaptateur WmlMobileTextBox

Chaque contrôle mobile correspond à un fichier d'adaptateur qui fournit les informations nécessaires au rendu du langage de balisage correct sur un périphérique mobile. Par exemple, un contrôle TextBox utilise la classe WmlTextBoxAdapter pour rendre le balisage correct sur un périphérique WML. Ce fichier d'adaptateur contient une méthode Render qui peut être modifiée pour changer le type de balisage envoyé à un client. La méthode Render contient normalement un appel à l'adaptateur WmlMobileTextWriter qui contient des méthodes d'assistance. Dans cette procédure pas à pas, la méthode Writer.RenderTextBox d'assistance WmlMobileTextWriter vous aide à créer une balise <input> à envoyer au client.

Elle montre également comment utiliser la méthode GetAttribute pour lire l'attribut personnalisé testAttribute, comme l'illustre l'exemple suivant.

<mobile:textbox id="TextBox1" testAttribute="First Name:" runat="server" />)

Cet attribut test peut être défini sur un contrôle au moment du design pour générer une balise <input> WML au moment de l'exécution, comme cela est illustré ci-après.

<input  name="TextBox1" testAttribute="FirstName"/>

Pour modifier le fichier d'adaptateur

  1. Téléchargez les fichiers sources d'adaptateurs à partir de https://go.microsoft.com/fwlink/?LinkId=6350https://support.microsoft.com/highlights/mitk.asp.

  2. Ouvrez la copie du fichier WmlTextBoxAdapter.cs pour la modifier.

  3. Localisez la méthode Render dans ce fichier puis ajoutez le code suivant avant l'appel à la méthode Writer.RenderTextBox.

    [C#]

    String myAttribute = ((IAttributeAccessor)Control).GetAttribute("testAttribute");
    
  4. Ajoutez myAttribute comme dernier argument de l'appel Writer.RenderTextBox trouvé dans la méthode Render.

    [C#]

    writer.RenderTextBox(
       Control.ClientID, 
       value,
       format, 
       Control.Title,
       Control.Password, 
       Control.Size, 
       Control.MaxLength, 
       Control.BreakAfter,
       myAttribute
    );
    

Puisque la procédure précédente ajoute un nouvel argument passé à la méthode RenderTextBox de WmlMobileTextWriter, la fonction RenderTextBox doit être modifiée pour accepter et utiliser cet argument. La procédure suivante montre comment modifier cette fonction pour l'argument supplémentaire et également comment identifier le périphérique auquel le nouvel attribut de contrôle doit être envoyé à l'aide d'une instruction if.

Pour identifier le périphérique, la propriété MobileDeviceModel de la classe MobileCapabilities est utilisée. La valeur MobileDeviceModel est créée dans le fichier Machine.config lorsqu'un périphérique fait une demande. Si le bon périphérique a fait la demande, la méthode WriteAttribute de la classe WmlMobileTextWriter est appelée pour créer le nouveau balisage.

Pour modifier le fichier WmlMobileTextWriter.cs

  1. Ouvrez le fichier WmlMobileTextWriter.cs.

  2. Ajoutez l'argument de chaîne myAttribute à la méthode RenderTextBox, comme le montre l'exemple suivant.

    [C#]

    public virtual void RenderTextBox(
       String id, 
       String value,
       String format,
       String title,
       bool password, 
       int size, 
       int maxLength, 
       bool breakAfter,
       String myAttribute
    )
    
  3. Ajoutez le code suivant à la méthode RenderTextBox avant le code WriteLine(" />");.

    [C#]

    string type = Device.MobileDeviceModel;   
    if(type == "Generic Simulator")
    {
       if(myAttribute!=null && myAttribute.Length > 0)
       {
          WriteAttribute("testAttribute", myAttribute);
       }
    }
    

Dans certains cas, d'autres adaptateurs ont des dépendances avec un adaptateur que vous avez modifié. Par exemple, la classe UPWmlMobileTextWriter est spécialement conçue pour le navigateur UP.Browser d'Openwave et hérite de la classe WmlMobileTextWriter. Le développeur doit donc également modifier la méthode RenderTextBox dans la classe héritée conformément aux étapes suivantes.

Pour modifier le fichier UPWmlMobileTextWriter.cs

  1. Ouvrez le fichier UPWmlMobileTextWriter.cs.

  2. Ajoutez un argument de chaîne nommé myAttribute à la méthode RenderTextBox, comme le montre l'exemple suivant.

    [C#]

    public override void RenderTextBox(
       String id, 
       String value,
       String format, 
       String title,
       bool password, 
       int size, 
       int maxLength, 
       bool breakAfter,
       String myAttribute
    )
    
  3. Modifiez l'appel à base.RenderTextBox trouvé dans la méthode RenderTextBox pour passer l'argument myAttribute.

    [C#]

    base.RenderTextBox(id, value, format, title, password, size, maxLength, false, myAttribute);
    

Une fois les fichiers d'adaptateurs modifiés, créez un nouvel assembly qui peut être utilisé dans vos applications Web mobiles.

Pour créer un nouvel assembly

  1. Ouvrez une invite de commande Microsoft Visual Studio .NET en cliquant sur le bouton Démarrer. Sélectionnez ensuite le menu Programmes, puis le menu Microsoft Visual Studio .NET et le menu Outils Visual Studio .NET et cliquez sur Invite de commande Visual Studio .NET.

  2. Dans la fenêtre Invite de commande Visual Studio .NET, entrez la commande suivante avec l'emplacement des nouveaux fichiers d'adaptateurs créés lors de la première étape de cette procédure pas à pas.

    cd hdd:\new adapter folder location
    
  3. Entrez la commande suivante pour compiler et créer une nouvelle DLL d'adaptateur.

    Csc /target:library
    /out:System.Web.UI.MobileControls.ShippedAdapterSource.dll
    /r:System.Web.Mobile.dll
    /debug+
    /D:COMPILING_FOR_SHIPPED_SOURCE
    /nowarn:0679
    *.cs
    

Une fois le nouvel assembly d'adaptateur créé, il doit être référencé dans l'application Web. Le fichier Web.config doit aussi être mis à jour pour substituer les paramètres Machine.config de sorte que le nouvel assembly soit utilisé. Si vous utilisez des attributs personnalisés, vous devez définir la propriété AllowCustomAttributes dans le fichier Web.config.

Pour configurer l'application Web

  1. Dans Visual Studio .NET, cliquez avec le bouton droit de la souris sur le nom de projet dans Explorateur de solutions puis sélectionnez Ajouter une référence.

  2. Cliquez sur le bouton Parcourir pour atteindre le nouvel assembly d'adaptateur puis sur Ouvrir. Cliquez sur OK.

  3. Ajoutez la prise en charge du nouvel assembly d'adaptateur en copiant le code du fichier Web.config-shippedAdapaters que vous avez téléchargé dans le fichier Web.config de votre projet.

    Remarque   Omettez les balises d'ouverture et de fermeture <system.web> car elles sont déjà dans le fichier Web.config que Visual Studio .NET génère.

  4. Dans le fichier Web.config, ajoutez la prise en charge des attributs personnalisés en affectant la valeur true à la propriété AllowCustomAttributes de la balise <mobileControls> existante, comme le montre l'exemple suivant.

    <mobileControls allowCustomAttributes="true">
    </mobileControls>
    
  5. Recompilez votre projet Visual Studio .NET.

Voir aussi

Ajout de nouveaux adaptateurs de périphérique et d'une prise en charge des périphériques