Representación específica de dispositivos

Actualización: noviembre 2007

Aunque las páginas Web de ASP.NET Mobile se pueden representar en una gran variedad de dispositivos automáticamente, también proporcionan medios para especificar contenido específico de un dispositivo o de una clase de dispositivos. Esto significa que las páginas Web móviles permiten personalizar una página para aprovechar funciones concretas de un dispositivo. Por ejemplo, un requisito bastante común es representar los elementos de manera diferente en dispositivos distintos. ASP.NET trata la mayor parte del formato implícito apropiado para la representación en una amplia gama de tipos de dispositivos. Sin embargo, si es necesario, ASP.NET puede representar una etiqueta utilizando una cadena en un dispositivo y una cadena diferente en otro dispositivo.

Para administrar escenarios de este tipo, se debe incluir código en la aplicación que establezca las propiedades de los controles dependiendo del resultado de las consultas sobre las funciones de los dispositivos. Si se desea personalizar una página Web móvil para tipos específicos de dispositivos, se debe definir un conjunto de filtros de dispositivo para la página y, a continuación, especificar el filtro para cada tipo de dispositivo mediante una construcción <DeviceSpecific><Choice>.

Nota:

El archivo de configuración móvil predeterminado de Visual Studio contiene varios filtros de dispositivo predefinidos. De manera predeterminada, ASP.NET 2.0 no genera automáticamente filtros de dispositivo móvil. Sin embargo, si migra la aplicación Web de una versión anterior de ASP.NET a ASP.NET 2.0, los filtros de dispositivo se mantendrán en el archivo Web.config.

Utilizar la propiedad Filter

La propiedad Filter se usa para evaluar los filtros de dispositivos con las funciones o características de los dispositivos, o para establecer filtros específicos.

El nombre del filtro debe corresponderse con el de un método de la página o del archivo .ascx asociado, o con el nombre de un filtro de dispositivos válido definido en el elemento <deviceFilters> del archivo Web.config. Si se especifica el nombre de un método con la propiedad Filter, dicho método debe coincidir con el siguiente prototipo:

public bool methodName(
    System.Web.Mobile.MobileCapabilities capabilities,
    String optionalArgument);

Por ejemplo, si se establece la propiedad Filter en myChoiceMethod, debe existir un método con la firma siguiente.

public bool myChoiceMethod(
    System.Web.Mobile.MobileCapabilities capabilities, 
    String optionalArgument
);

Cuando ASP.NET evalúa el elemento Choice, se realiza una comprobación para determinar si existe en la página o en el control de usuario un método de la firma apropiada. Si no existe, ASP.NET comprueba el elemento <deviceFilters> del archivo Web.config.

Utilizar filtros de dispositivos para ampliar la clase MobileCapabilities

Al agregar filtros de dispositivo propios al archivo Web.config, se puede extender la clase MobileCapabilities. La configuración de los filtros de dispositivos proporciona un mecanismo de evaluación para dos tipos de filtros: los filtros basados en la comparación y los filtros basados en el delegado evaluador.

Filtros basados en la comparación

Los filtros basados en la comparación realizan comparaciones básicas, que por lo general utilizan un argumento booleano. Para este tipo de filtro, se debe proporcionar el nombre de la función y el valor que se desea que compare el filtro. En tiempo de ejecución, el evaluador consigue su propósito si el valor de la función y el valor que se proporciona coinciden. Las propiedades booleanas comparadas no distinguen entre mayúsculas y minúsculas; por tanto, true y True son equivalentes. Otras propiedades comparadas distinguen mayúsculas de minúsculas.

Filtros basados en el delegado evaluador

Para las evaluaciones más complejas, se puede especificar un filtro basado en el delegado evaluador proporcionando el nombre de clase y método del método. En tiempo de ejecución, se llama al método proporcionado para probar el evaluador. Se debe escribir y compilar un método propio para probar el evaluador. Como alternativa, se puede definir un método en la página o en el control de usuario y, a continuación, hacer referencia a él directamente en el atributo filter, como se describió anteriormente.

Sintaxis del archivo Web.config

Cuando se especifican filtros de dispositivo en los archivos Web.config, se agregan a la sección <system.web>. Para conocer la sintaxis, vea <deviceFilters>. La sintaxis se aplica a ambos tipos de filtros. En el ejemplo siguiente, el primer filtro está basado en la comparación, mientras que el segundo está basado en el delegado evaluador.

<system.web>
  <deviceFilters>
    <filter
      name="capability"
      compare="capabilityName"
      argument="argument" />
    <filter
      name="capability"
      type="className"
      method="methodName" />
  </deviceFilters>
</system.web>

El objeto MobileCapabilities evalúa estos filtros durante el tiempo de ejecución. Cada filtro de dispositivos especifica una condición de evaluación basada en las características o funciones del dispositivo. Los conjuntos de dispositivos que son objetivo de los filtros no suelen ser discretos; por ejemplo, muchos dispositivos pueden coincidir con los atributos de filtroIsColor e IsPDA.

Nota:

Los nombres de filtro de dispositivo distinguen entre mayúsculas y minúsculas.

Los valores para estos filtros se especifican en la construcción <DeviceSpecific><Choice>. Por ejemplo, en el código siguiente se tiene acceso al filtro IsColor definido en el archivo Web.config.

<DeviceSpecific>
    <Choice Filter="IsColor" ImageUrl="colorImg.gif" />
</DeviceSpecific>

Utilizar la construcción Device-Specific/Choice

La construcción <DeviceSpecific><Choice> es la construcción principal para insertar marcado específico de un dispositivo en una página. Si se desea agregar marcado específico de un dispositivo para un control, se debe agregar el elemento <DeviceSpecific> como elemento secundario del control. Un control puede contener un solo elemento <DeviceSpecific>.

Los elementos <DeviceSpecific> y <Choice> permiten especificar un conjunto de valores entre los cuales ASP.NET elige, basándose en características del dispositivo que realiza la solicitud. Los valores de las opciones son cadenas.

El elemento <DeviceSpecific> es un mero contenedor externo para almacenar una serie de opciones, como se muestra en el ejemplo siguiente:

<mobile:Image runat=server ImageURL="bw.gif">
  <DeviceSpecific>
    <Choice Filter="isColor" ImageURL="colorImg.gif"
      AlternateText="This device cannot display the image." />
    <Choice Filter="isWML11" ImageURL="myImage.wbmp" />
    <Choice ImageURL="monoImage.gif" />
  </DeviceSpecific>
</mobile:Image>

Los filtros, como isColor, deben tener sus entradas correspondientes en el archivo Web.config, o deben existir como métodos en la página o en el control de usuario, como se ha descrito anteriormente.

Utilizar el elemento Choice

Las opciones se sitúan dentro de un elemento <DeviceSpecific>, y representan pares de característica y valor de dispositivo, en el que la característica de dispositivo se obtiene de una serie de orígenes. Las opciones se evalúan en el orden en que aparecen en la construcción DeviceSpecific/Choice.

Aunque un control sólo puede contener un elemento <DeviceSpecific>, se puede agregar cualquier número de elementos <Choice> dentro de un elemento <DeviceSpecific>. Cada elemento <Choice> puede contener lo siguiente:

  • Un nombre de filtro, que especifica el filtro de dispositivos que se va a evaluar. Si se omite el nombre del filtro, la opción se selecciona de forma predeterminada.

  • Propiedades adicionales que reemplacen propiedades del control principal.

  • Definiciones de plantillas para el control.

Para elegir qué elemento <Choice> debe usar, ASP.NET analiza todas las opciones especificadas por orden y evalúa el filtro especificado por nombre de filtro. Si el filtro coincide con el dispositivo de destino actual (evaluándose en true), se selecciona esa opción. A continuación, el control aplica cualquier reemplazo de propiedades especificado en la opción y puede utilizar cualquiera de las plantillas definidas en la representación.

Vea también

Otros recursos

Desarrollar páginas Web de ASP.NET Mobile