Suggerimenti per l'applicazione di filtri di dispositivo

In questa sezione viene descritto come creare filtri basati sul confronto o filtri basati su delegati di valutazione per i controlli mobili ASP.NET. I filtri di dispositivo rappresentano un meccanismo utile per la creazione di criteri che possono essere utilizzati dagli sviluppatori per specificare dispositivi o proprietà di dispositivi mobili. I filtri vengono memorizzati nella sezione <deviceFilters> del file di configurazione Web.config.

Ogni filtro di dispositivo corrisponde a uno o più tipi di dispositivo e un singolo dispositivo può corrispondere a più filtri. Un Pocket PC potrebbe, ad esempio, corrispondere al filtro IsColor in quanto dispositivo a colori, al filtro IsPDA in quanto agenda elettronica e al filtro IsHTML32 in quanto browser HTML.

Per ogni filtro viene aggiunto l'elemento <filter> nella sezione <deviceFilters> del file web.config. È possibile specificare filtri basati sul confronto e filtri basati su delegati di valutazione.

Filtri basati sul confronto

I filtri basati sul confronto comparano il valore di una proprietà MobileCapabilities e un argomento. Di seguito viene indicata la sintassi di un filtro basato sul confronto.

<filter
    name="nameofFilter"
    compare="propertyName"
    [argument="filterargument"]/>

In questo tipo di filtro, l'elemento <filter> presenta le tre proprietà descritte di seguito.

  • L'attributo name, ovvero il nome del filtro.
  • L'attributo compare, contenente la proprietà valutata dal filtro.
  • L'attributo argument, ovvero l'argomento con cui viene confrontato il valore propertyName. Se non viene fornito alcun argomento, per il confronto viene utilizzato il valore null.

Nell'esempio che segue, se il valore di PreferredRenderingType è wml11, il filtro individua la corrispondenza.

<filter
    name="isWML11"
    compare="PreferredRenderingType"
    argument="wml11" />

Se il filtro viene utilizzato in un tag <Choice> e viene individuata la corrispondenza, ASP.NET seleziona il contenuto specifico per il dispositivo incluso nei modelli dell'elemento <Choice>.

Filtri basati su delegati di valutazione

I filtri basati su delegati di valutazione restituiscono true o false, a seconda del tipo di elaborazione eseguita dal metodo. Il metodo consente di calcolare il valore restituito per qualunque proprietà della classe MobileCapabilities. Il valore restituito viene utilizzato per verificare se il filtro individua la corrispondenza o meno.

Di seguito viene indicata la sintassi di un filtro basato su delegati di valutazione.

<filter
    name="nameOfFilter"
    type="className"
    method="methodName"/>

Un filtro basato su delegati di valutazione presenta le tre proprietà descritte di seguito.

  • L'attributo name, ovvero il nome del filtro.
  • L'attributo type, ovvero il tipo di classe che fornisce il delegato di valutazione. Il nome deve rispettare gli standard Microsoft .NET per la specificazione di un nome di tipo completo. ASP.NET esegue una ricerca dell'assembly specificato in base al tipo.
  • L'attributo method, ovvero il nome di un metodo presente nel type di classe che restituisce un valore booleano indicante se il dispositivo corrente soddisfa questo filtro in base all'istanza MobileCapabilities che viene passata.

Nell'esempio riportato di seguito, se il metodo IsGPSEnabled restituisce true, il filtro individua la corrispondenza.

<filter
    name="GPSEnabled"
    type="MyNamespace.MyCapabilityEvaluators,MyAssembly"
    method="IsGPSEnabled"/>

Nell'esempio che segue, viene indicata la struttura della dichiarazione per il metodo IsGPSEnabled.

[C#]

namespace MyApplication
{
    public class MyCapabilityEvaluators
    {
        public static bool IsGPSEnabled(
            System.Web.Mobile.MobileCapabilities capabilities,
            String unusedArg)
        {
// Any necessary proccessing goes here.
        }
    }
}

Dopo aver compilato il codice e posizionato l'assembly in un percorso accessibile dall'applicazione, ad esempio /bin, è possibile aggiungere il relativo supporto inserendo una riga nella sezione <deviceFilters> del file Web.config. Se, ad esempio, il filtro precedente era stato compilato in un assembly chiamato MyApplication.dll, aggiungere all'applicazione la riga seguente:

<filter name="IsGPSEnabled"
   type="MyApplication.MyCapabilityEvaluators,MyApplication"
   method="IsGPSEnabled" />

Vedere anche

Funzionalità estese del browser | Rendering specifico di dispositivo | Elemento <filter>