2011-12-29 10 views
0

サイトの1つで特定のページをモバイル版にリダイレクトできるようにしています。私は、ブログの投稿をSteve SandersonShiju Vargheseで、属性の使用法と51degrees.mobiについて読んでいます。mvc3でモバイルデバイスを検出するためのベストプラクティスは何ですか?

私がしたいことは、デバイスがモバイルデバイスの場合は、特定のページ、ディーラーロケータ、/ mobile/dealer-locatorにリダイレクトされます。これを達成するために、私はディーラーのコントローラと必要なビューを持つAreaを設定しました。コードを直接テストしたところ、正しく動作するようです。

ユーザーエージェントをiPhone 3.0に変更して実際のデバイスやFFからサイトにアクセスすると、/ mobileにリダイレクトされます。ページルートをモバイルルートに簡単にマッピングする方法はありますか?

サイトではisapi_rewriteが使用されており、問題のページにはmap/dealer-locatorから/ dealerlocatorへのルールがあり、dealerlocatorはコントローラであることに言及する必要があります。

フォームの投稿が正しく機能していないように気付きましたので、今すぐ取得します。

+1

携帯電話をサポートするMVC 4ベータ版が必要な場合があります。もっと見る[ここ:](http://www.asp.net/mvc/tutorials/mvc-4/aspnet-mvc-4-mobile-features) – gdoron

答えて

0

(あなたの質問に言及)シジューVargheseのブログ記事から、RedirectMobileDevicesToMobileAreaAttributeクラスのメソッド:

// Override this method if you want to customize the controller/action/parameters to which 
// mobile users would be redirected. This lets you redirect users to the mobile equivalent 
// of whatever resource they originally requested. 
protected virtual RouteValueDictionary GetRedirectionRouteValues(RequestContext requestContext) 
{ 
    return new RouteValueDictionary(new { area = "Mobile", controller = "Home", action = "Index" }); 
} 

は、このの世話をするためにオーバーライドすることができます。

この例では、すべてが~/Mobile/Home/Indexに送信されているように見えますが、どこにでもリクエストを送信できます。彼はあなたの非移動ルートのためにGlobal.asax.csで定義するルートテーブルに匹敵する新しいルートテーブルを作成しています。ルートテーブル全体を置き換えることも、既存のルートをループして、モバイルequivelantsのみを含む辞書を返すこともできます。

関連する問題