Il est possible d'avoir pour la plupart un seul ensemble de modèles et de contrôleurs. La façon de le faire sera de mettre en œuvre le moteur Theming/Templating suivant. [Theming Support] [1] J'ai piggy ma solution sur le dessus d'un moteur Theming/Templating.
L'écart majeur 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 à rendre MVC 1 compatible, mais je ne me souviens pas des changements exacts. L'autre problème majeur que j'avais était le débogage de la sortie. Pour cela, j'ai utilisé firefox avec une extension ([User Agent Switcher] [2]) que j'ai modifié pour y ajouter des types d'acceptation.
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 masterpage et les pages de contenu à adhérer à WML ou XHTML1.2
[1]: http://frugalcoder.us/post/2008/11/13/ASPNet-MVC-Theming.aspx thématisation soutien
[2]: http://chrispederick.com/work/user-agent-switcher/ User Agent Switcher
votre site sera en utilisant WAP1/WML ou WAP 2/XHT ML1.2? –