Pergunta

Estamos a planear a implementação de um site WAP usando ASP.NET MVC.

Alguém tem alguma experiance isso? Há alguma dicas?

Nós também será a implementação de um "padrão" web site para navegadores. Seria possível ter um único conjunto de modelos e controladores, e só tem vistas separadas para cada site?

Foi útil?

Solução

É possível ter em sua maior parte um único conjunto de modelos e controladores. A maneira de fazê-lo será através da implementação das seguintes motor de temas / Templating. [Suporte Theming] [1] I piggy apoiado a minha solução no topo de um motor de temas / Templating.

A maior desvio da fonte do artigo está no arquivo Global.asax.cs onde você precisa adicionar as seguintes linhas 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");
            }
        }

Eu sei que eu tinha que fazer um par de alterações no código para torná-lo MVC 1 compatível, mas não me lembro as mudanças exatas. O outro grande problema que tive foi a depuração da saída. Para isso eu usei o Firefox com uma extensão ([User Agent Switcher] [2]) que eu mudei para adicionar Aceitar Tipos para ele.

Para WAP2 / XHTML1.2 a aceitar os tipos são: text / html, application / vnd.wap.xhtml + xml, application / xhtml + xml, application / xml; q = 0,9, / ; q = 0,8

Obviamente você precisa de seu masterpage e páginas de conteúdo para aderir a WML ou XHTML1.2

[1]: http://frugalcoder.us /post/2008/11/13/ASPNet-MVC-Theming.aspx Theming Suporte

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top