Recomendaciones para el filtrado de dispositivos

Actualización: noviembre 2007

En este tema se describe cómo se crean filtros basados en la comparación y filtros basados en el delegado evaluador para controles de ASP.NET Mobile. Los filtros de dispositivos proporcionan un mecanismo para crear criterios con nombre que se pueden usar para especificar dispositivos o propiedades de dispositivos móviles. Estos filtros se almacenan en la sección <deviceFilters> del archivo Web.config.

Todos los filtros de dispositivos se corresponden, o coinciden, con uno o varios tipos de dispositivos, y un dispositivo individual puede corresponderse con varios filtros. Por ejemplo, un equipo Pocket PC puede corresponderse con el filtro IsColor como dispositivo de color, IsPDA como PDA (asistente digital personal) e IsHTML32 como explorador HTML.

Para cada filtro se agrega un elemento <filter> en la sección <deviceFilters> del archivo Web.config.

Se pueden especificar filtros basados en la comparación y filtros basados en el delegado evaluador.

Los filtros basados en la comparación comparan el valor de una propiedad MobileCapabilities con un argumento. La sintaxis de un filtro basado en la comparación es la siguiente:

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

En los filtros basados en la comparación, el elemento <filter> incluye tres propiedades:

  • El atributo name, que es el nombre del filtro.

  • El atributo compare, que contiene la propiedad que evalúa el filtro.

  • El atributo argument, que es el argumento con el que se compara el valor de propertyName. Si no se proporciona ningún argumento, se usará null para la comparación.

En el ejemplo siguiente, si el valor de PreferredRenderingType es wml11, existe coincidencia con el filtro.

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

Cuando el filtro se usa en un elemento <Choice> y se encuentra una coincidencia con él, ASP.NET selecciona el contenido específico del dispositivo en cuestión, que está en las plantillas contenidas en el elemento <Choice>.

Los filtros basados en el delegado evaluador devuelven true o false desde un método personalizado. El método calcula el valor devuelto en cualquiera de las propiedades de la clase MobileCapabilities. El valor devuelto se usa para determinar si existe coincidencia con el filtro.

La sintaxis de un filtro basado en el delegado evaluador es la siguiente:

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

En los filtros basados en el delegado evaluador existen tres propiedades:

  • El atributo name, que es el nombre del filtro.

  • El atributo type, que es el tipo de clase que proporciona el delegado evaluador. El nombre debe ser completo. ASP.NET busca el ensamblado especificado para el tipo.

  • El atributo method, que es el nombre de un método en la clase Type. El método devuelve un valor booleano que indica si el dispositivo actual satisface este filtro basándose en la instancia de MobileCapabilities que se le ha pasado.

En el ejemplo siguiente, si el método IsGPSEnabled devuelve true, existe coincidencia con el filtro.

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

En el ejemplo siguiente se muestra una declaración estructural para el método IsGPSEnabled.

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

Para agregar compatibilidad para un filtro, se agrega una línea a la sección <deviceFilters> del archivo Web.config. Por ejemplo, si compiló el filtro anterior en un ensamblado denominado MyApplication.dll, debe agregar la línea siguiente en el archivo Web.config:

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

Adiciones de comunidad

Mostrar: