Compartir a través de


Evaluar funciones mediante programación

Actualización: noviembre 2007

Para los controles de ASP.NET mobile, se puede tener acceso mediante programación a la funcionalidad proporcionada a través de la sección <deviceFilters> del archivo Web.config utilizando el método HasCapability de la clase MobileCapabilities. Al llamar a este método, se pueden evaluar los métodos de comparación.

El método HasCapability es útil para determinar mediante programación si el dispositivo actual satisface un filtro de dispositivo declarado en el archivo Web.config. La instancia de MobileCapabilities almacena en memoria caché la evaluación del método HasCapability para no tener que volver a evaluar las solicitudes posteriores del mismo nombre de función y argumento opcional. El método HasCapability es útil cuando se desea escribir código que se corresponda con el modo en que el marco de trabajo de páginas ASP.NET selecciona entre varias opciones de un elemento <DeviceSpecific>.

Nota:

El método HasCapability no admite opciones del elemento <DeviceSpecific> que llamen a métodos definidos en la página.

El método HasCapability tiene dos argumentos: capabilityName, que es el nombre del método, propiedad o elemento de evaluación de dispositivos del diccionario de funciones, y optionalArgument, que es cualquier argumento que requiera el argumento capabilityName. El método HasCapability realiza su evaluación en el orden siguiente:

  1. Comprueba si el valor de capabilityName es el nombre de un filtro de dispositivos especificado en el archivo Web.config.

    Nota:

    El método HasCapability evalúa la construcción <DeviceSpecific> y <Choice> estableciendo el argumento optionalArgument en null.

  2. Si la prueba del paso 1 devuelve true y el filtro es un evaluador delegado, es decir, un filtro que usa un método personalizado para evaluar los datos especificados, el método HasCapability llamará al delegado con el argumento suministrado en el parámetro optionalArgument y devolverá el resultado.

  3. Si la prueba del paso 1 devuelve true y el filtro es un evaluador de comparación, es decir, un filtro que compara el nombre de una función con un valor, el método HasCapability se llamará a sí mismo con el nombre de función y el argumento suministrados en el evaluador (cualquier parámetro optionalArgument original se omite) y devolverá el resultado.

  4. Si el objeto MobileCapabilities tiene una propiedad denominada capabilityName, el método HasCapability convierte esta propiedad a una cadena y devuelve true si el valor optionalArgument es igual a esta cadena. Las comparaciones booleanas no diferencian entre mayúsculas y minúsculas; sin embargo, otras comparaciones si lo hacen. Por consiguiente, "true" es equivalente a "True", pero "left" no es equivalente a "Left".

  5. Si no existe ninguna propiedad capabilityName, el método HasCapability busca en el diccionario de funciones asociado al objeto MobileCapabilities. Si existe la propiedad capabilityName, el método HasCapability la compara con el parámetro optionalArgument y devuelve el resultado. Como el diccionario mantiene cadenas, no es necesaria la conversión.

  6. Si estas pruebas son incorrectas, el método HasCapability inicia una excepción ArgumentOutOfRangeException.

Ejemplos

En los ejemplos siguientes se muestra cómo se puede llamar al método HasCapability, donde GPSEnabled y ScreenBitDepth son filtros, propiedades o valores definidos en la colección Items.

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

Alternativamente, puede llamar al método de la manera siguiente:

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

Vea también

Conceptos

Métodos de evaluación de dispositivos

Recomendaciones para el filtrado de dispositivos

Representación específica de dispositivos

Referencia

Tabla de funciones de dispositivos

Elemento <filter>