Rendu spécifique au périphérique
Mise à jour : novembre 2007
Bien que les pages Web mobiles ASP.NET puissent s'afficher automatiquement sur divers périphériques, elles fournissent également des manières de définir un contenu spécifique à un périphérique ou à une classe de périphériques. En d'autres termes, les pages Web mobiles vous permettent de personnaliser une page en tirant parti des fonctionnalités propres à un périphérique. Par exemple, une spécification requise commune consiste à afficher les éléments de manière différente selon les périphériques. ASP.NET gère une grande partie de la mise en forme implicite, qui est adaptée au rendu spécifique à divers types de périphériques. Toutefois, si nécessaire, vous pouvez faire en sorte qu'ASP.NET restitue une étiquette en utilisant une chaîne sur un périphérique et une autre chaîne sur un autre périphérique.
Pour gérer ce genre de situation, vous ajoutez du code dans l'application afin de définir les propriétés des contrôles en fonction des résultats des demandes relatives aux fonctionnalités de périphérique. Pour personnaliser une page Web mobile en fonction de types de périphériques spécifiques, vous définissez un ensemble de filtres de périphérique pour cette page, puis spécifiez le filtre correspondant à chaque type de périphérique à l'aide d'une construction <DeviceSpecific><Choice>.
Remarque : |
---|
Le fichier de configuration mobile Visual Studio par défaut contient divers filtres de périphérique prédéfinis. ASP.NET 2.0 ne génère pas automatiquement de filtres de périphérique mobile par défaut. Toutefois, si vous effectuez la migration de votre application Web d'une version ASP.NET précédente vers ASP.NET version 2.0, vos filtres de périphérique sont conservés dans le fichier Web.config. |
Utilisation de la propriété Filter
Utilisez la propriété Filter pour évaluer les filtres de périphérique par rapport aux fonctionnalités de périphérique, ou pour définir des filtres spécifiques.
Le nom du filtre doit correspondre au nom d'une méthode contenue dans la page ou le fichier .ascx associé, ou au nom d'un filtre de périphérique valide défini dans l'élément <deviceFilters> du fichier Web.config. Si le nom d'une méthode est spécifié avec la propriété Filter, cette méthode doit correspondre au prototype suivant :
public bool methodName(
System.Web.Mobile.MobileCapabilities capabilities,
String optionalArgument);
Par exemple, si la propriété Filter a la valeur myChoiceMethod, une méthode ayant la signature suivante doit exister.
public bool myChoiceMethod(
System.Web.Mobile.MobileCapabilities capabilities,
String optionalArgument
);
Lorsque ASP.NET évalue l'élément Choice, il vérifie si une méthode ayant la signature appropriée existe dans la page ou dans le contrôle utilisateur. S'il n'en existe pas, ASP.NET vérifie l'élément <deviceFilters> du fichier Web.config.
Utilisation de filtres de périphérique pour étendre la classe MobileCapabilities
En ajoutant vos propres filtres de périphérique au fichier Web.config, vous pouvez étendre la classe MobileCapabilities. La configuration des filtres de périphérique fournit un mécanisme d'évaluation pour deux types de filtres : le filtre de comparaison et le filtre de délégué évaluateur.
Filtres de comparaison
Le filtre de comparaison effectue des comparaisons de base, généralement basées sur un argument Boolean. Pour ce type de filtre, vous devez fournir le nom d'une fonctionnalité et la valeur à comparer par le filtre. Au moment de l'exécution, l'évaluation réussit si la valeur de la fonctionnalité et la valeur fournie sont équivalentes. Les propriétés Boolean comparées ne respectent pas la casse ; par conséquent, les valeurs true et True sont équivalentes. Les autres propriétés comparées respectent la casse.
Filtres de délégué évaluateur
Pour réaliser une évaluation complexe, vous pouvez spécifier un filtre de délégué évaluateur en indiquant la classe et le nom d'une méthode. Au moment de l'exécution, la méthode indiquée est appelée pour tester l'évaluateur. Vous devez écrire et compiler votre propre méthode pour tester l'évaluateur. Vous pouvez également définir une méthode dans votre page ou votre contrôle utilisateur, puis la référencer directement à partir de l'attribut filter, comme cela a été décrit précédemment.
Syntaxe du fichier Web.config
Lorsque vous spécifiez des filtres de périphérique dans le fichier Web.config, vous les ajoutez à la section <system.web>. Pour voir la syntaxe, consultez <deviceFilters>. La syntaxe s'applique aux deux types de filtres. Dans l'exemple suivant, le premier filtre correspond au filtre de comparaison, et le second filtre correspond au filtre de délégué évaluateur.
<system.web>
<deviceFilters>
<filter
name="capability"
compare="capabilityName"
argument="argument" />
<filter
name="capability"
type="className"
method="methodName" />
</deviceFilters>
</system.web>
L'objet MobileCapabilities évalue ces filtres au moment de l'exécution. Chaque filtre de périphérique spécifie une condition d'évaluation basée sur les fonctionnalités du périphérique. Les ensembles de périphériques ciblés par les filtres de périphérique ne sont généralement pas discrets ; par exemple, de nombreux périphériques peuvent correspondre à la fois aux attributs de filtre IsColor et IsPDA.
Remarque : |
---|
Les noms des filtres de périphérique respectent la casse. |
Dans la construction <DeviceSpecific><Choice>, vous spécifiez les valeurs de ces filtres. Par exemple, le code suivant accède à l'attribut de filtre IsColor défini dans le fichier Web.config.
<DeviceSpecific>
<Choice Filter="IsColor" ImageUrl="colorImg.gif" />
</DeviceSpecific>
Utilisation de la construction DeviceSpecific/Choice
La construction <DeviceSpecific><Choice> constitue la construction principale permettant d'insérer dans une page un balisage spécifique au périphérique. Si vous voulez ajouter un balisage spécifique au périphérique pour un contrôle, vous devez ajouter l'élément <DeviceSpecific> en tant qu'enfant du contrôle. Un contrôle peut contenir un seul élément <DeviceSpecific>.
Les éléments <DeviceSpecific> et <Choice> vous permettent de spécifier un ensemble de valeurs à choisir par ASP.NET, en fonction des caractéristiques du périphérique demandeur. Les valeurs des choix sont des chaînes.
L'élément <DeviceSpecific> est un conteneur externe qui possède un certain nombre de choix, comme le montre l'exemple suivant :
<mobile:Image runat=server ImageURL="bw.gif">
<DeviceSpecific>
<Choice Filter="isColor" ImageURL="colorImg.gif"
AlternateText="This device cannot display the image." />
<Choice Filter="isWML11" ImageURL="myImage.wbmp" />
<Choice ImageURL="monoImage.gif" />
</DeviceSpecific>
</mobile:Image>
Les filtres, tels que isColor, doivent disposer d'entrées correspondantes dans le fichier Web.config, ou exister en tant que méthodes sur la page ou dans le contrôle utilisateur, comme cela a été décrit précédemment.
Utilisation de l'élément Choice
Les choix sont placés dans un élément <DeviceSpecific> ; ils représentent les paires caractéristiques du périphérique/valeur, où les caractéristiques du périphérique sont définies à partir d'un certain nombre de sources. Les choix sont évalués dans l'ordre de leur apparition dans la construction DeviceSpecific/Choice.
Bien qu'un contrôle puisse contenir un seul élément <DeviceSpecific>, vous pouvez ajouter autant d'éléments <Choice> que voulu dans un élément <DeviceSpecific>. Chaque élément <Choice> peut contenir ce qui suit :
Un nom de filtre, qui spécifie le filtre de périphérique à évaluer. Si le nom du filtre est omis, le choix par défaut est sélectionné.
Des propriétés supplémentaires qui se substituent aux propriétés du contrôle parent.
Des définitions de modèles pour le contrôle.
ASP.NET sélectionne l'élément <Choice> à utiliser en parcourant dans l'ordre chacun des choix, puis en évaluant le filtre spécifié par le nom de filtre. Si le filtre correspond au périphérique cible actif (la valeur évaluée est true), ce choix est sélectionné. Le contrôle applique alors les substitutions de propriétés spécifiées dans le choix, et peut utiliser tous les modèles définis dans le rendu.