Domanda

Abbiamo intenzione di implementare un sito WAP utilizzando ASP.NET MVC-.

Qualcuno ha experiance di questo? Ci sono dei trucchi?

Ci sarà anche implementando un sito web "standard" per i browser. Sarebbe possibile avere un unico insieme di modelli e controllori, e solo viste separate per ciascun sito?

È stato utile?

Soluzione

E 'possibile avere per la maggior parte di un unico insieme di modelli e controllori. Il modo per farlo sarà via di attuazione il motore Tematizzazione / Templating. [Tematizzazione Supporto] [1] Ho piggy sostenuto la mia soluzione in cima ad un motore dei temi / Templating.

La deviazione maggiore dalla fonte articolo è nel file Global.asax.cs in cui è necessario aggiungere le seguenti righe di codice:

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");
            }
        }

So che ho dovuto fare un paio di modifiche al codice per renderlo MVC 1 compatibile, ma non riesco a ricordare le modifiche esatte. L'altro grosso problema che ho avuto è stato il debug l'uscita. Per questo ho usato Firefox con un'estensione ([User Agent Switcher] [2]), che ho cambiato per aggiungere accettare tipi ad esso.

Per WAP2 / XHTML1.2 i tipi accettiamo sono: text / html, application / vnd.wap.xhtml + xml, application / xhtml + xml, application / xml; q = 0.9, / ; q = 0,8

Ovviamente è necessario le pagine MasterPage e contenuti di aderire a WML o XHTML1.2

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

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top