Empfehlungen zum Filtern von Geräten
Aktualisiert: November 2007
In diesem Thema wird das Erstellen von vergleichsbasierten Filtern und Filtern für Auswertungsdelegaten für ASP.NET Mobile-Steuerelemente beschrieben. Gerätefilter stellen einen Mechanismus zum Erstellen benannter Kriterien bereit, mit denen Sie Geräte und Eigenschaften von mobilen Geräten festlegen können. Diese Filter werden im Abschnitt <deviceFilters> der Datei Web.config gespeichert.
Jeder Gerätefilter entspricht mindestens einem Gerätetyp, und ein einziges Gerät kann mehreren Filtern entsprechen. Ein Pocket PC kann beispielsweise folgenden Filtern entsprechen: als Farbgerät dem Filter IsColor, als PDA dem Filter IsPDA und als HTML-basierter Browser dem Filter IsHTML32.
Für jeden Filter fügen Sie ein <filter>-Element im Abschnitt <deviceFilters> der Datei Web.config hinzu.
Sie können vergleichsbasierte Filter und delegatbasierte Auswertungsfilter angeben.
Vergleichsfilter
Vergleichsbasierte Filter vergleichen eine MobileCapabilities-Eigenschaft mit einem Argument. Die Syntax für einen Vergleichsfilter lautet:
<filter
name="nameofFilter"
compare="propertyName"
argument="filterargument" />
In einem vergleichsbasierten Filter besitzt das <filter>-Element drei Eigenschaften:
Das name-Attribut, das den Namen des Filters darstellt.
Das compare-Attribut, das die vom Filter ausgewertete Eigenschaft enthält.
Das argument-Attribut, das das Argument darstellt, mit dem der propertyName-Wert verglichen wird. Wenn Sie kein Argument bereitstellen, wird null für den Vergleich verwendet.
Im folgenden Beispiel ist der Filter zutreffend, wenn der PreferredRenderingType-Wert wml11 beträgt.
<filter
name="isWML11"
compare="PreferredRenderingType"
argument="wml11" />
Wenn der Filter in einem <Choice>-Element verwendet wird und die Übereinstimmung im Filter erfolgreich ist, wählt ASP.NET den gerätespezifischen Inhalt aus, der in den Vorlagen im <Choice>-Element enthalten ist.
Filter für Auswertungsdelegaten
Delegatbasierte Auswertungsfilter geben true oder false von einer benutzerdefinierten Methode zurück. Die Methode berechnet den Rückgabewert für alle Eigenschaften in der MobileCapabilities-Klasse. Anhand des zurückgegebenen Werts wird bestimmt, ob eine Übereinstimmung mit dem Filter vorliegt.
Die Syntax für einen delegatbasierten Auswertungsfilter lautet:
<filter
name="nameOfFilter"
type="className"
method="methodName" />
In einem Filter für Auswertungsdelegaten sind drei Eigenschaften vorhanden:
Das name-Attribut, das den Namen des Filters darstellt.
Das type-Attribut, das den Klassentyp darstellt, der den Auswertungsdelegaten bereitstellt. Der Name muss vollqualifiziert sein. ASP.NET sucht in der angegebenen Assembly nach dem Typ.
Das method-Attribut, das der Name einer Methode für die Type-Klasse ist. Die Methode gibt einen booleschen Wert zurück, der angibt, ob das aktuelle Gerät diesem Filter auf Basis der an den Filter übergebenen MobileCapabilities-Instanz entspricht.
Im folgenden Beispiel ist der Filter zutreffend, wenn die IsGPSEnabled-Methode true zurückgibt.
<filter
name="GPSEnabled"
type="MyApplication.MyCapabilityEvaluators,MyAssembly"
method="IsGPSEnabled"/>
Das folgende Beispiel stellt das Skelett einer Deklaration für die IsGPSEnabled-Methode dar.
namespace MyApplication
{
public class MyCapabilityEvaluators
{
public static bool IsGPSEnabled(
System.Web.Mobile.MobileCapabilities capabilities,
String unusedArg)
{
// Any necessary proccessing goes here.
}
}
}
Sie fügen Unterstützung für einen Filter hinzu, indem Sie dem <deviceFilters>-Abschnitt der Datei Web.config eine Zeile hinzufügen. Wenn Sie beispielsweise den vorherigen Filter in die Assembly MyApplication.dll kompiliert haben, fügen Sie der Datei Web.config die folgende Zeile hinzu:
<filter name="IsGPSEnabled"
type="MyApplication.MyCapabilityEvaluators,MyApplication"
method="IsGPSEnabled" />