Question

Nous prévoyons la mise en œuvre d'un site WAP utilisant ASP.NET MVC.

Quelqu'un at-il experiance cela? Y at-il Gotchas?

Nous allons également appliquerons un site Web « standard » pour les navigateurs. Serait-il possible d'avoir un seul ensemble de modèles et contrôleurs, et juste séparés vues pour chaque site?

Était-ce utile?

La solution

Il est possible d'avoir la plupart du temps un ensemble unique de modèles et contrôleurs. La façon de le faire sera mise en œuvre par le biais du moteur thématisation / Templating suivant. [Thématisation Support] [1] Je Piggy reculai ma solution au-dessus d'un moteur thématisation / Templating.

La déviation majeure de la source de l'article est dans le fichier Global.asax.cs où vous devez ajouter les lignes de code suivantes:

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

Je sais que je devais faire quelques changements de code pour le rendre compatible MVC 1, mais je ne me souviens pas exactement les changements. L'autre problème majeur que j'avais été la sortie de débogage. Pour cela je Firefox avec une extension ([User Agent Switcher] [2]) que j'ai changé d'ajouter Accepter les types à elle.

Pour WAP2 / XHTML1.2 les types sont Accept: text / html, application / xml vnd.wap.xhtml +, application / xhtml + xml, application / xml; q = 0,9, / ; q = 0,8

Il est évident que vous avez besoin de vos pages masterpage et le contenu d'adhérer à WML ou XHTML1.2

[1]: http://frugalcoder.us /post/2008/11/13/ASPNet-MVC-Theming.aspx de thématisation support

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top