2012-03-14 21 views
6

En mi aplicación web ASP.NET MVC 3 estoy anulando el nombre de la vista en un motor de vista personalizado para presentar una vista diferente optimizada para dispositivos móviles que no sean tabletas.ASP.NET MVC 3 Detección de dispositivo móvil simple y confiable: ¿usa 51degrees.mobi o se vuelve nativo?

Todo lo que deseo para realizar esta anulación de vista es un valor preciso para Request.Browser.IsMobileDevice y el ancho de visualización nativo del dispositivo.

51degrees.mobi se siente muy pesado y complicado para este caso de uso simple. Tal vez esa es solo mi frustración al tratar de examinar todos los ejemplos y la documentación en el sitio web de 51degrees para obtener respuestas a lo que parecen ser preguntas simples para una implementación simple.

Ausente 51degrees, obtengo valores para Request.Browser.IsMobileDevice y Request.Browser.ScreenPixelsWidth. Me he dado cuenta de que para los navegadores de escritorio el ancho es siempre 640, mientras que Request.Browser.Capabilities["51Degrees.mobi"] contiene un valor de "Desconocido" para ScreenPixelsWidth. Supongo que el valor Desconocido es más preciso dada la naturaleza del servidor de la implementación.

Mi pregunta principal es: ¿realmente necesito 51degrees para mis requisitos simples?

Si no utilizo 51degrees, ¿hay algunos ejemplos específicos de navegadores que detecte IsMobileDevice y el ancho de la pantalla correctamente? Por ejemplo, ¿los valores incorporados .NET Request.Browser.IsMobile y ScreenPixelsWidth serán inexactos o no estarán disponibles para el nuevo iPad cuando salga o para la última versión del navegador de Android? Mi sitio recibe alrededor del 65% de usuarios de dispositivos móviles, muchos de ellos con teléfonos con navegador como el navegador UP, por lo que tener movilidad es algo importante.

Si uso 51degrees, ¿necesito profundizar siempre en Request.Browser.Capabilities ["51Degrees.mobi"]? ¿O 51degrees reemplaza/actualiza el valor de Request.Browser.IsMobileDevice para estar sincronizado con su evaluación del navegador? Claramente, no anula Request.Browser.ScreenPixelsWidth.

Estoy abierto a las respuestas de "lo estás haciendo mal, aquí hay una mejor manera", siempre y cuando no sugieran MVC 4 o que impliquen una solución paga como WURFL.

Respuesta

4

Este FAQ explica qué propiedades de Request.Browser son anuladas por 51Degrees.mobi.

Hay muy pocos casos en los que deba acceder alguna vez a la clave "51Degrees.mobi" directamente. Cuando la propiedad haya sido anulada, acceda a ella como lo haría normalmente. Cuando la propiedad no sea anulada o no esté cubierta por HttpBrowserCapabilities, debe usar el nombre de la propiedad. Por ejemplo:

var isTablet = Request.Browser ["IsTablet"];

Consulte este link para obtener una lista de propiedades disponibles.

Como debería anular ScreenPixelsWidth Me interesaría saber más sobre su entorno de prueba. Como .NET requiere que el valor sea numérico si 51Degrees.mobi no puede determinar el tamaño (Desconocido), entonces el valor no se anulará.

Gracias por considerar 51Degrees.mobi.