L'implementazione di un sito WAP utilizzando ASP.NET MVC-
-
19-09-2019 - |
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?
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