Pregunta

Estamos pensando en la implementación de un sitio WAP usando ASP.NET MVC.

¿Alguien alguna experiancia de esto? ¿Hay problemas comunes?

También estaremos implementando un sitio web "estándar" para los navegadores. ¿Sería posible tener un único conjunto de modelos y controladores, y sólo tienen vistas separadas para cada sitio?

¿Fue útil?

Solución

Es posible tener en su mayor parte un único conjunto de modelos y controladores. La forma de hacerlo será a través de la aplicación de la siguiente Tematización del motor / de plantillas. [Theming Soporte] [1] Yo retrocedí Piggy mi solución en la parte superior de un motor de Tematización / Plantillas.

La mayor desviación con respecto a la fuente artículo está en el archivo Global.asax.cs donde tiene que añadir las siguientes líneas de código:

protected void Application_BeginRequest(Object Sender, EventArgs e)
{
  SetTheme();
}
//this will set the responses Content Type to xhtml and is necessary as C# sends the WML response header
protected void Application_PreSendRequestHeaders(Object Sender, EventArgs e)
{
  if (this.Context.Items["themeName"].ToString() == "xhtml")
  {
    this.Context.Response.ContentType = "application/vnd.wap.xhtml+xml";
  }
}

private void SetTheme()
{
  //set the content type for the ViewEngine to utilize. 

            HttpContext context = this.Context;
            MobileCapabilities currentCapabilities = (MobileCapabilities)context.Request.Browser;
            String prefMime = currentCapabilities.PreferredRenderingMime;

            string accept = context.Request.ServerVariables["HTTP_ACCEPT"];
            context.Items.Remove("theme");
            context.Items.Remove("themeName");

            if (accept.Contains("application/vnd.wap.xhtml+xml"))
            {
                context.Items.Add("themeName", "xhtml");
            }
            else if (prefMime == "text/vnd.wap.wml")
            {
                context.Items.Add("themeName", "WAP");
            }
            if (!context.Items.Contains("themeName"))
            {
                context.Items.Add("themeName", "Default");
            }
        }

Yo sabía que tenía que hacer un par de cambios en el código para que sea compatible MVC 1, pero no puedo recordar los cambios exactos. El otro gran problema que tuve fue la depuración de la salida. Para ello he utilizado Firefox con una extensión ([User Agent Switcher] [2]) que he cambiado para agregar aceptar otros modos a la misma.

Para WAP2 / XHTML1.2 los Tipos aceptamos son: text / html, application / vnd.wap.xhtml + xml, application / xhtml + xml, application / xml; q = 0,9, / ; q = 0,8

Obviamente se necesita sus páginas masterpage y contenido de adherirse a WML o XHTML1.2

[1]: http://frugalcoder.us /post/2008/11/13/ASPNet-MVC-Theming.aspx Tematización Soporte

[2]: http://chrispederick.com/work/user-agent- conmutador / User Agent Switcher

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top