Valutazione delle funzionalità a livello di codice

Nei controlli mobili ASP.NET, è possibile accedere a livello di codice alla stessa 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 il filtro di dispositivo dichiarato in Web.config. L'istanza MobileCapabilities memorizza nella cache la valutazione eseguita dal 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 è utile quando si scrive il codice che deve corrispondere al modo in cui il framework ASP.NET sceglie tra le opzioni disponibili in un elemento <DeviceSpecific>.

Nota   Il metodo HasCapability non supporta le scelte nell'elemento <DeviceSpecific> che chiamano metodi definiti nella pagina.

Il metodo HasCapability è costituito da 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, è qualsiasi argomento richiesto dall'argomento di capabilityName. L'ordine di valutazione del metodo HasCapability è indicato di seguito.

  1. Il metodo verifica se capabilityName è il nome di un filtro di dispositivo specificato in Web.config.

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

  2. Se la verifica del passaggio 1 restituisce true e se il filtro è basato su un delegato di valutazione, 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 se il filtro è un analizzatore di confronto, ovvero un filtro che confronta il nome di una funzionalità e un valore, al metodo HasCapability vengono assegnati il nome e l'argomento della funzionalità forniti nell'analizzatore; il metodo ignora ogni parametro optionalArgument originale e restituisce il risultato.

  4. Se l'oggetto MobileCapabilities contiene la proprietà chiamata capabilityName, il metodo HasCapability esegue il cast della proprietà in una stringa e restituisce true se 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 non vengono rilevate proprietà, il metodo HasCapability esegue la ricerca di capabilityName nel dizionario delle funzionalità associato all'oggetto MobileCapabilities. Se 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 non hanno esito positivo, il metodo HasCapability genera l'eccezione ArgumentOutOfRange.

Esempi

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

[C#]

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

oppure

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

Vedere anche

Tabella delle funzionalità di dispositivo | Metodi di valutazione dei dispositivi | Suggerimenti per l'applicazione di filtri di dispositivo | Rendering specifico di dispositivo | Elemento <filter>