Sdílet prostřednictvím


Empfohlene Vorgehensweise für die Wiedergabe mit mobilem Textwriter

Aktualisiert: November 2007

Während der Wiedergabephase schreiben alle ASP.NET Mobile-Geräteadapter ihre Ausgabe mithilfe einer Klasse, die von der MobileTextWriter-Basisklasse erbt. Die tatsächliche Klasse des Textwriters kann zielgerätespezifisch sein. Der Seitenadapter instanziiert einen entsprechenden Writer und gibt ihn zurück. Der ChtmlPageAdapter gibt zum Beispiel für ein Gerät, das cHTML-Markup benötigt, ein ChtmlMobileTextWriter-Objekt von seiner CreateTextWriterMethode zurück.

Die MobileTextWriter-Klasse definiert eine Reihe von allgemeinen Eigenschaften und Methoden für Adapter. Sie können für einen Steuerelementadapter zusätzliche Hilfsmember definieren, die spezifisch für die Writerklasse des Adapters sind. Methoden der HtmlTextWriter-Basisklasse, zum Beispiel Write, WriteLine und WriteBeginTag, sind verfügbar, weil die MobileTextWriter-Klasse von der HtmlTextWriter-Basisklasse erbt.

Stark typisierte Render-Methode

Ein Adapter benötigt im Allgemeinen einen Textwriter von einer bestimmten Klasse. Zum Beispiel muss der WmlPageAdapter ein WmlMobileTextWriter-Objekt verwenden. Die Render-Methode der IControlAdapter-Schnittstelle enthält einen Parameter des Typs HtmlTextWriter. Daher sollte der Adapter die Render-Methode überschreiben, um die gewünschte Textwriterklasse verfügbar zu machen, oder den Writer in die benötigte Klasse umwandeln.

Das folgende Beispiel zeigt das Überschreiben der Render-Methode in einem neuen Adapter in der XHTML-Adaptergruppe für eine benutzerdefinierte CarControl-Klasse. Der Name dieses benutzerdefinierten Adapters lautet XhtmlCarControlAdapter, der feststehenden Namenskonventionen für neue Adapter folgt.

// Specialized XhtmlCarControlAdapter Render method
public void Render(XhtmlMobileTextWriter writer)
{
    ... [rendering code]
}
// Generic XhtmlCarControlAdapter Render method
public override void Render(HtmlTextWriter writer)
{
    Render((XhtmlMobileTextWriter)writer);
}

Beginnen und Beenden einer Antwort

Vor dem Schreiben einer Antwort muss ein Seitenadapter bestimmte Methoden in seiner Render-Methode aufrufen. Im Folgenden finden Sie eine typische Reihenfolge von Aktionen für einen Seitenadapter:

  1. Rufen Sie die BeginResponse-Methode des Writers auf.

  2. Rufen Sie die BeginFile-Methode des Writers auf, und übergeben Sie dabei den Seiten-URL sowie den gewünschten Inhaltstyp (MIME-Typ) der Daten. Ein HTML-Seitenadapter zum Beispiel übergibt text/html als Inhaltstyp.

  3. Darstellen der Seite (i. d. R. das aktive Formular).

  4. Rufen Sie die EndFile-Methode des Writers auf.

  5. Rufen Sie die EndResponse-Methode des Writers auf.

Das folgende Codebeispiel verdeutlicht eine einfache Render-Methodefür einen HTML-Seitenadapter.

public override void Render(MobileTextWriter writer)
{
    writer.BeginResponse();
    writer.BeginFile(Page.Request.Url.ToString(), "text/html");
    Page.ActiveForm.RenderControl(writer);
    writer.EndFile();
    writer.EndResponse();
}

Ausgabecodierung

Die MobileTextWriter-Klasse stellt Hilfsmethoden zum Codieren der Wiedergabe bereit. Die Codierung hängt vom Zielgerät ab. Zum Beispiel erfordern WML-basierte Geräte Dollarzeichen ($) zur Codierung. Folgende Hilfsmethoden stehen zur Verfügung:

  • Zum Schreiben von Text, der für ein Zielgerät codiert ist, kann der Adapter die WriteEncodedText-Methode des Writers aufrufen.

  • Zum Schreiben eines URLs (einschließlich von Parametern) für ein Zielgerät kann der Adapter die WriteEncodedUrl-Methode des Writers aufrufen.

  • Zum Schreiben eines URL-Arguments (der Teil des URLs hinter dem Abfragesymbol [?] des Benutzeragententextes) für ein Zielgerät kann der Adapter die WriteEncodedUrlParameter-Methode des Writers aufrufen.

Ausgabecache

ASP.NET-Webseiten enthalten Unterstützung für das Zwischenspeichern der Seitenausgabe. Eine Seite kann mithilfe einer @ OutputCache-Direktive zwischengespeichert werden.

In mobilen Webseiten muss festgelegt werden, dass die zwischengespeicherte Ausgabe entsprechend dem Zielgerät variiert. Bei Anforderung einer Seite durch ein Gerät, auf dem Microsoft Internet Explorer für den Pocket PC ausgeführt wird, muss die resultierende Ausgabe nur für andere Geräte zwischengespeichert und zurückgegeben werden, auf denen ebenfalls Internet Explorer für den Pocket PC ausgeführt wird.

In der Standardeinstellung steuert der HTTP-Benutzeragententext die Varianten von zwischengespeicherten mobilen Webseiten. Die Ausgabe anderer Geräte kann aber von zusätzlichen Eigenschaften beeinflusst werden. Wenn z. B. für ein Gerät mit einem einzelnen Benutzeragententext mehrere Einstellungen für die Bildschirmgröße vorhanden sind, kann für jede Einstellung eine andere Ausgabe erfolgen. Um diese Abweichungen zuzulassen, kann der Seitenadapter die CacheVaryByHeaders-Eigenschaft überschreiben.

ASP.NET-Webbenutzersteuerelemente unterstützen außerdem eine @ OutputCache-Direktive, mit der die Ausgabe individuell zwischengespeichert werden kann. Dies wird als teilweises Zwischenspeichern bezeichnet. Benutzersteuerelemente in mobilen Webseiten unterstützen diese Direktive allerdings nicht. Mobile Webseiten unterstützen teilweises Zwischenspeichern nicht, da die Ausgabe eines Benutzersteuerelements abhängig vom Inhalt der restlichen Seite unterschiedlich ausfallen kann.

Siehe auch

Konzepte

Interaktion zwischen Steuerelement und Adapter

Weitere Ressourcen

Hinzufügen neuer Geräteadapter und Gerätunterstützung