Condividi tramite


Valutazione delle funzionalità a livello di codice

Aggiornamento: novembre 2007

Nei controlli mobili ASP.NET è possibile accedere a livello di codice alla funzionalità disponibile mediante la sezione <deviceFilters> del file Web.config utilizzando il metodo HasCapability della classe MobileCapabilities. Chiamando il metodo è possibile valutare i metodi di confronto.

Il metodo HasCapability si rivela utile per determinare a livello di codice se il dispositivo corrente soddisfa un filtro di periferica dichiarato nel file Web.config. L'istanza della classe MobileCapabilities memorizza nella cache la valutazione del metodo HasCapability affinché non sia necessario valutare di nuovo le successive richieste per lo stesso nome di funzionalità e per l'argomento facoltativo. Il metodo HasCapability si rivela utile se si desidera scrivere codice che corrisponda al modo in cui il framework delle pagine ASP.NET sceglie tra le opzioni disponibili in un elemento <DeviceSpecific>.

Nota:

Il metodo HasCapability non supporta le opzioni dell'elemento <DeviceSpecific> che chiamano metodi definiti nella pagina.

Il metodo HasCapability accetta due argomenti. Il primo, capabilityName, è il nome del metodo, della proprietà o dell'elemento di valutazione del dispositivo nel dizionario delle funzionalità. Il secondo, optionalArgument, indica qualsiasi argomento richiesto dall'argomento capabilityName. L'ordine di valutazione del metodo HasCapability è indicato di seguito:

  1. Il metodo verifica se il valore capabilityName è il nome di un filtro di periferica specificato nel file Web.config.

    Nota:

    Il metodo HasCapability valuta il costrutto di <DeviceSpecific> e <Choice> impostando l'argomento optionalArgument su null.

  2. Se la verifica del passaggio 1 restituisce true e il filtro è basato su un delegato evaluator, ovvero un filtro che utilizza un metodo personalizzato per valutare i dati specificati, il metodo HasCapability richiama il delegato con l'argomento fornito nel parametro optionalArgument e restituisce il risultato.

  3. Se la verifica del passaggio 1 restituisce true e il filtro è un analizzatore di confronto, ovvero un filtro che confronta il nome di una funzionalità e un valore specificato, il metodo HasCapability assume il nome e l'argomento della funzionalità forniti nell'analizzatore (viene ignorato qualsiasi parametro optionalArgument originale) e restituisce il risultato.

  4. Se nell'oggetto MobileCapabilities è contenuta la proprietà denominata capabilityName, il metodo HasCapability esegue il cast della proprietà in una stringa e restituisce true se il valore optionalArgument equivale alla stringa stessa. I confronti booleani, a differenza degli altri confronti, non distinguono tra maiuscole e minuscole. Pertanto "true" equivale a "True", mentre "left" non equivale a "Left".

  5. Se la proprietà capabilityName non è presente, il metodo HasCapability esegue una ricerca nel dizionario delle funzionalità associato all'oggetto MobileCapabilities. Se invece la proprietà capabilityName è presente, il metodo HasCapability esegue il confronto con il parametro optionalArgument e restituisce il risultato. Poiché il dizionario gestisce le stringhe, non è necessario eseguire il cast.

  6. Se le verifiche hanno esito negativo, il metodo HasCapability genera un'eccezione ArgumentOutOfRangeException.

Esempi

Negli esempi riportati di seguito viene illustrato come chiamare il metodo HasCapability. GPSEnabled e ScreenBitDepth sono filtri, proprietà o valori definiti nell'insieme Items.

((MobileCapabilities)Request.Browser).HasCapability("GPSEnabled", null);

In alternativa, è possibile chiamare il metodo come indicato di seguito:

((MobileCapabilities)Request.Browser).HasCapability("ScreenBitDepth", "8");

Vedere anche

Concetti

Metodi di valutazione dei dispositivi

Suggerimenti per l'applicazione di filtri di periferica

Rendering specifico di dispositivo

Riferimenti

Tabella delle funzionalità di dispositivo

Elemento <filter>