ASP.NET MVC-を使用してWAPサイトの実装
-
19-09-2019 - |
質問
私たちは、ASP.NET MVC-を使用してWAPサイトの実装を計画しています。
誰もがこれのいずれかの実務経験ていますか?どんな落とし穴がありますか。
我々はまた、ブラウザの「標準」のWebサイトを実装します。それはモデルとコントローラのセットを1つ持っている可能性があり、ちょうど各サイトの別々の景色を眺めることができますか?
解決
ほとんどの部分はモデルとコントローラのセットを1つ持つことが可能です。 それを行う方法は、以下のテーマ設定/テンプレートエンジンを実装経由となります。 [テーマ設定サポート] [1] 私はテーマ設定/テンプレートエンジンの上に私の解決策を担保ピギーます。
記事ソースからの大きな逸脱を使用すると、次のコード行を追加する必要がありGlobal.asax.csファイルにあります:
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");
}
}
私はそれがMVC 1互換性を持たせるためにコードの変更のカップルをしなければならなかったけど、私は、正確な変更を思い出すことができません。 私が持っていた他の主要な問題は、デバッグ出力をされました。このために私は私がそれに型を受け入れる追加するように変更したこと([2] [ユーザーエージェント切り替え])拡張でFirefoxを使用していました。
受け入れるタイプであるWAP2 / XHTML1.2の場合:text / htmlで、アプリケーション/ vnd.wap.xhtml + xmlの、アプリケーション/ XHTML + xmlの、アプリケーション/ xmlの; Q = 0.9、 / の; Q = 0.8
もちろん、あなたがWMLやXHTML1.2に準拠するためにあなたのマスターページとコンテンツページを必要とする
[1]: http://frugalcoder.us /post/2008/11/13/ASPNet-MVC-Theming.aspx のテーマ設定サポート
[2]: http://chrispederick.com/work/user-agent-スイッチャー/ のユーザーエージェント切り替え