Méthodes conseillées pour le rendu du writer de texte mobile
Mise à jour : novembre 2007
Lors de la phase de rendu, tous les adaptateurs de périphérique mobile ASP.NET écrivent leur sortie à l'aide d'une classe qui hérite de la classe de base MobileTextWriter. La classe réelle du writer de texte peut être spécifique au périphérique cible ; l'adaptateur de page instancie et retourne un writer approprié. Par exemple, pour un périphérique nécessitant un balisage cHTML, ChtmlPageAdapter retourne un objet ChtmlMobileTextWriter de sa méthode CreateTextWriter.
La classe MobileTextWriter définit un ensemble de propriétés et de méthodes communes pour les adaptateurs. Vous pouvez définir, pour un adaptateur de contrôle, des membres d'assistance supplémentaires spécifiques à la classe de writer pour l'adaptateur. Les méthodes de la classe de base HtmlTextWriter, telles que Write, WriteLine et WriteBeginTag, sont disponibles, car la classe MobileTextWriter hérite de la classe de base HtmlTextWriter.
Méthode Render fortement typée
Un adaptateur a généralement besoin du writer de texte d'une classe spécifique. Par exemple, WmlPageAdapter doit utiliser un objet WmlMobileTextWriter. La méthode Render de l'interface IControlAdapter inclut un paramètre de type HtmlTextWriter. Par conséquent, l'adaptateur doit substituer la méthode Render pour rendre disponible la classe de writer de texte souhaitée, ou effectuer un cast du writer dans la classe requise.
L'exemple suivant illustre la substitution de la méthode Render dans un nouvel adaptateur de l'ensemble d'adaptateurs XHTML pour une classe CarControl personnalisée. Le nom de cet adaptateur personnalisé est XhtmlCarControlAdapter, conformément aux conventions d'affectation de noms établies pour les nouveaux adaptateurs.
// Specialized XhtmlCarControlAdapter Render method
public void Render(XhtmlMobileTextWriter writer)
{
... [rendering code]
}
// Generic XhtmlCarControlAdapter Render method
public override void Render(HtmlTextWriter writer)
{
Render((XhtmlMobileTextWriter)writer);
}
Début et fin d'une réponse
Avant d'écrire une réponse, un adaptateur de page doit appeler certaines méthodes dans sa méthode Render. Voici l'ordre type des actions effectuées pour un adaptateur de page :
Appeler la méthode BeginResponse du writer.
Appeler la méthode BeginFile du writer, en passant l'URL de la page et le type de contenu (type MIME) souhaité des données. Par exemple, un adaptateur de page HTML passerait text/html comme type de contenu.
Afficher la page (généralement le formulaire actif).
Appeler la méthode EndFile du writer.
Appeler la méthode EndResponse du writer.
L'exemple de code suivant illustre une méthode Render simplepour un adaptateur de page HTML.
public override void Render(MobileTextWriter writer)
{
writer.BeginResponse();
writer.BeginFile(Page.Request.Url.ToString(), "text/html");
Page.ActiveForm.RenderControl(writer);
writer.EndFile();
writer.EndResponse();
}
Codage de sortie
La classe MobileTextWriter fournit des méthodes d'assistance pour coder le rendu. Le codage dépend du périphérique cible. Par exemple, les périphériques WML exigent que les symboles du dollar ($) soient codés. Les méthodes d'assistance sont les suivantes :
Pour écrire du texte codé pour un périphérique cible, votre adaptateur peut appeler la méthode WriteEncodedText du writer.
Pour écrire une URL (y compris les paramètres) pour un périphérique cible, votre adaptateur peut appeler la méthode WriteEncodedUrl du writer.
Pour écrire un argument d'URL (partie de l'URL qui suit le symbole de requête [?] de la chaîne de l'agent utilisateur) pour un périphérique cible, votre adaptateur peut appeler la méthode WriteEncodedUrlParameter du writer.
Mise en cache de sortie
Les pages Web ASP.NET incluent une prise en charge pour la mise en cache de la sortie de la page. Une page peut être mise en cache au moyen d'une directive @ OutputCache.
Dans les pages Web mobiles, la sortie mise en cache doit être définie pour varier en fonction du périphérique cible. Par exemple, si un périphérique exécutant Microsoft Internet Explorer pour Pocket PC demande une page, la sortie qui en résulte doit être mise en cache et retournée uniquement pour les autres périphériques exécutant Internet Explorer pour Pocket PC.
Par défaut, la chaîne de l'agent utilisateur HTTP contrôle la variation des pages Web mobiles mises en cache. Toutefois, la sortie d'autres périphériques peut être affectée par des propriétés supplémentaires. Par exemple, un périphérique avec une chaîne d'agent utilisateur unique pourrait avoir plusieurs paramètres de taille d'écran, chacun pouvant avoir une sortie différente. Pour tenir compte de ces variations, l'adaptateur de page peut substituer la propriété CacheVaryByHeaders.
Les contrôles utilisateur Web ASP.NET prennent par ailleurs en charge une directive @ OutputCache qui permet une mise en cache individuelle de leur sortie. C'est ce qu'on appelle la mise en cache partielle. Cependant, les contrôles utilisateur dans les pages Web mobiles ne prennent pas cette directive en charge. Les pages Web mobiles ne prennent pas en charge la mise en cache partielle, car la sortie d'un contrôle utilisateur peut être différente en fonction du contenu du reste de la page.
Voir aussi
Concepts
Interaction entre contrôle et adaptateur
Autres ressources
Ajout de nouveaux adaptateurs de périphérique et d'une prise en charge des périphériques