Freigeben über


Gerätespezifische Wiedergabe

Aktualisiert: November 2007

Obwohl ASP.NET Mobile-Webseiten auf einer Vielzahl von Geräten automatisch wiedergegeben werden können, stehen auch mehrere Möglichkeiten zur Verfügung, um spezifischen Inhalt für ein Gerät oder eine Geräteklasse anzugeben. Das bedeutet, dass Sie mithilfe von mobilen Webseiten eine Seite anpassen können, um die besonderen Features eines Geräts zu nutzen. Beispielsweise ist es eine übliche Anforderung, Elemente auf verschiedenen Geräten unterschiedlich wiederzugeben. ASP.NET behandelt viele der impliziten Formatierungen zur korrekten Wiedergabe auf verschiedenen Gerätetypen. Falls erforderlich, können Sie mit ASP.NET aber auch eine Bezeichnung mit einer Zeichenfolge auf einem Gerät und mit einer unterschiedlichen Zeichenfolge auf einem anderen Gerät wiedergeben.

Zum Verwalten derartiger Szenarien fügen Sie Code in die Anwendung ein, um die Eigenschaften der Steuerelemente entsprechend den Ergebnissen der Funktionsabfragen für Geräte festzulegen. Zum Anpassen einer mobilen Webseite für bestimmte Gerätetypen definieren Sie eine Gruppe von Gerätefiltern für die Seite und geben anschließend mit einem <DeviceSpecific><Choice>-Konstrukt den Filter für jeden Gerätetyp an.

Hinweis:

Die mobile Standardkonfigurationsdatei in Visual Studio enthält eine Vielzahl vordefinierter Gerätefilter. ASP.NET, Version 2.0, generiert standardmäßig keine mobilen Gerätefilter automatisch. Wenn Sie aber eine Webanwendung von einer vorherigen ASP.NET-Version auf ASP.NET, Version 2.0, migrieren, bleiben die Gerätefilter in der Datei Web.config erhalten.

Verwenden der Filter-Eigenschaft

Mit der Filter-Eigenschaft können Sie Gerätefilter anhand von Gerätefunktionen auswerten oder bestimmte Filter festlegen.

Der Filtername muss mit dem Namen einer Methode auf der Seite, der zugeordneten ASCX-Datei oder mit dem Namen eines gültigen Gerätefilters übereinstimmen, der im <deviceFilters>-Element der Datei Web.config definiert ist. Wenn ein Methodenname in der Filter-Eigenschaft angegeben wird, muss diese Methode mit folgendem Prototyp übereinstimmen:

public bool methodName(
    System.Web.Mobile.MobileCapabilities capabilities,
    String optionalArgument);

Wenn beispielsweise die Filter-Eigenschaft auf myChoiceMethod festgelegt wird, muss eine Methode mit der folgenden Signatur vorhanden sein.

public bool myChoiceMethod(
    System.Web.Mobile.MobileCapabilities capabilities, 
    String optionalArgument
);

Bei der Auswertung des <Choice>-Elements durch ASP.NET wird geprüft, ob eine Methode mit der entsprechenden Signatur auf der Seite oder im Benutzersteuerelement vorhanden ist. Wenn sie nicht existiert, überprüft ASP.NET das <deviceFilters>-Element der Datei Web.config.

Verwenden von Gerätefiltern zum Erweitern der MobileCapabilities-Klasse

Sie können die MobileCapabilities-Klasse erweitern, indem Sie der Datei Web.config eigene Gerätefilter hinzufügen. Durch die Konfiguration der Gerätefilter wird ein Auswertungsmechanismus für zwei Arten von Filtern bereitgestellt: für einen Vergleichsfilter und für einen Filter für Auswertungsdelegaten.

Vergleichsfilter

Der vergleichsbasierte Filter führt Basisvergleiche durch, denen meist ein boolesches Argument zugrunde liegt. Für diesen Filtertyp müssen Sie den Namen einer Funktion und den Wert eingeben, den Sie mithilfe des Filters vergleichen möchten. Zur Laufzeit ist die Auswertung erfolgreich, wenn der Funktionswert mit dem eingegebenen Wert identisch ist. Bei den verglichenen booleschen Eigenschaften wird die Groß- und Kleinschreibung nicht beachtet, sodass true und True als identisch angesehen werden. Beim Vergleichen anderer Eigenschaften wird die Groß- und Kleinschreibung beachtet.

Filter für Auswertungsdelegaten

Bei einer komplexeren Auswertung können Sie einen Filter mit einem Auswertungsdelegaten angeben, indem Sie die Klasse und den Methodennamen einer Methode angeben. Zur Laufzeit wird die angegebene Methode aufgerufen, um die Auswertung zu testen. Zum Testen der Auswertung müssen Sie eine eigene Methode schreiben und kompilieren. Sie können jedoch auch eine Methode auf der Seite oder im Benutzersteuerelement definieren und dann, wie zuvor beschrieben, direkt aus dem filter-Attribut darauf verweisen.

Syntax der Datei Web.Config

Wenn Sie Gerätefilter in der Datei Web.config angeben, fügen Sie sie dem Abschnitt <system.web> hinzu. Zum Anzeigen der Syntax lassen Sie <deviceFilters> anzeigen. Die Syntax gilt für beide Filtertypen. Im folgenden Beispiel zeigt der erste Filter den vergleichsbasierten Filter an, der zweite Filter zeigt den delegatbasierten Auswertungsfilter an:

<system.web>
  <deviceFilters>
    <filter
      name="capability"
      compare="capabilityName"
      argument="argument" />
    <filter
      name="capability"
      type="className"
      method="methodName" />
  </deviceFilters>
</system.web>

Das MobileCapabilities-Objekt wertet diese Filter zur Laufzeit aus. Jeder Gerätefilter gibt eine Auswertungsbedingung auf Grundlage der Funktionen des Geräts an. Die Zielgerätegruppen von Gerätefiltern sind im Allgemeinen nicht separat, viele Geräte können beispielsweise sowohl mit dem IsColor-Filterattribut als auch mit dem IsPDA-Filterattribut übereinstimmen.

Hinweis:

Bei den Gerätefilternamen muss die Groß- und Kleinschreibung beachtet werden.

Im <DeviceSpecific><Choice>-Konstrukt geben Sie die Werte für diese Filter an. Der folgende Code greift zum Beispiel auf das IsColor-Filterattribut zu, das in der Datei Web.config definiert ist.

<DeviceSpecific>
    <Choice Filter="IsColor" ImageUrl="colorImg.gif" />
</DeviceSpecific>

Verwenden des Device-Specific/Choice-Konstrukts

Das <DeviceSpecific><Choice>-Konstrukt ist das Hauptkonstrukt zum Einfügen von gerätespezifischem Markup auf einer Seite. Zum Hinzufügen von gerätespezifischem Markup für ein Steuerelement fügen Sie das <DeviceSpecific>-Element als untergeordnetes Element des Steuerelements hinzu. Ein Steuerelement enthält möglicherweise nur ein <DeviceSpecific>-Element.

Mithilfe des <DeviceSpecific>-Elements und des <Choice>-Elements können Sie eine Reihe von Werten angeben, aus denen ASP.NET abhängig von den Eigenschaften des anfordernden Geräts auswählt. Die Werte für die Auswahlmöglichkeiten sind Zeichenfolgen.

Das <DeviceSpecific>-Element ist ein äußerer Container zum Speichern einer Reihe von Auswahlmöglichkeiten, wie in folgendem Beispiel dargestellt:

<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>

Filter wie isColor müssen über entsprechende Einträge in der Datei Web.config verfügen oder als Methoden auf der Seite oder im Benutzersteuerelement vorhanden sein, wie zuvor beschrieben.

Verwenden des Choice-Elements

Auswahlmöglichkeiten werden in einem <DeviceSpecific>-Element platziert. Sie stellen Geräteeigenschaft-Wert-Paare dar, wobei die Geräteeigenschaft aus mehreren Quellen bezogen wird. Die Auswertung der Auswahlmöglichkeiten erfolgt in derselben Reihenfolge, in der sie im DeviceSpecific/Choice-Konstrukt angezeigt werden.

Obwohl ein Steuerelement nur ein <DeviceSpecific>-Element enthalten kann, können Sie beliebig viele <Choice>-Elemente in einem <DeviceSpecific>-Element hinzufügen. Jedes <Choice>-Element kann Folgendes enthalten:

  • Einen Filternamen, der den Gerätefilter für die Auswertung angibt. Wenn Sie keinen Filternamen angeben, wird für die Auswahl der Standardwert verwendet.

  • Zusätzliche Eigenschaften, die die Eigenschaften des übergeordneten Steuerelements überschreiben.

  • Vorlagendefinitionen für das Steuerelement.

ASP.NET wählt das zu verwendende <Choice>-Element aus, indem jede Auswahl der Reihe nach durchlaufen und der durch den Filternamen angegebene Filter ausgewertet wird. Wenn der Filter mit dem aktuellen Zielgerät übereinstimmt (wenn die Auswertung true ergibt), wird diese Auswahl verwendet. Das Steuerelement wendet anschließend alle in der Auswahl angegebenen Eigenschaftenüberschreibungen an und kann alle bei der Wiedergabe definierten Vorlagen verwenden.

Siehe auch

Weitere Ressourcen

Entwickeln von ASP.NET Mobile-Webseiten