2013-02-13 4 views
10

モバイルを検出するにはモバイルと同様のタブレットを検出すると同時に、デバイスの画面サイズを確認するタブレットまたは機能があるかどうかを確認する機能が必要です。タブレット(任意)のリクエストを検出するにはどうすればよいですか?

は、「私は、これは任意の

int wight = Request.Browser.ScreenPixelsWidth; 
       int height = Request.Browser.ScreenPixelsHeight; 

       if (Request.Browser.IsMobileDevice && wight < 720 && height<1280) 
      { 
       Response.Redirect("/mobile/Login.htm"); 
      } 
+1

私はあなたのタイトルを編集しました。 「[質問には「タイトル内に「タグ」を含める必要がありますか」(http://meta.stackexchange.com/questions/19190/)」を参照してください。コンセンサスは「いいえ、そうすべきではありません」です。 –

+0

@acbそのリンクはこの場合は適用されません。これは私たちが話しているブラウザです。 int型の高さ= Request.Browser.ScreenPixelsHeight; 場合(Request.Browser.IsMobileDevice &&ワイト – Icarus

答えて

7

それを必要とする場合は、ScreenPixelsWidthとScreenPixelsHeight(http://msdn.microsoft.com/en-us/library/system.web.httpbrowsercapabilities.aspx)を使用することができますし、あなたがあるかどうかを検討したしきい値を定義することができますコードでScreenPixelsWidthとScreenPixelsHeightを使用働くのをありがとう定期的またはモバイル版がレンダリングされなければならない。

この問題に対処するが、すでにHttpBrowserCapabilitiesクラスを使用しているので、あなたにもこれら2つのプロパティを使用する場合があり、より多くの方法があります。

+1

は、「私はいずれかが 'int型ワイト= Request.Browser.ScreenPixelsWidthそれを必要とする場合、これはコードでScreenPixelsWidthとScreenPixelsHeightを使用働くのをありがとう<720 && <1280) { レスポンスリダイレクト( "/ mobile/Login.htm"); –

+0

@VovaPotapov excellent。読みやすくてうれしいです。 – Icarus

+0

私は方法がエージェントの文字列より優れていると思いますパターンマッチング –

19

は、私は同様の問題を持っていたし、使用してみました: HttpContext.Request.Browser.ScreenPixelsWidth

しかしこれは関係なく、常にデバイス(iPhoneやiPad)の640個のピクセルの値を返しました。代わりにユーザーエージェントの文字列を検査する静的メソッドを作成して、この問題を解決しました。その後、私のコントローラで

public class DeviceHelper 
{ 
    public static bool IsTablet(string userAgent, bool isMobile) 
    { 
     Regex r = new Regex("ipad|android|android 3.0|xoom|sch-i800|playbook|tablet|kindle|nexus"); 
     bool isTablet = r.IsMatch(userAgent) && isMobile; 
     return isTablet; 
    } 
} 

if(DeviceHelper.IsTablet(Request.UserAgent, Request.Browser.IsMobileDevice)) 
    return Redirect("..."); // redirect to tablet url 
+0

これは、 'Request.Browser.IsMobileDevice'が電話機とタブレットの両方に対してtrueを返すことを意味しますか? –

+2

@IanCampbellはい、両手を片手で持ち歩くことができるからです!MSは[51Degrees (私はそのアドオンの無料版はまだモバイルとしてすべてを報告すると思うが)_ – drzaus

+0

正規表現はその中でインスタンス化されるべきである方法: 'Regex r = new Regex(" ipad | android | android 3.0 | xoom | sch-i800 | playbook |タブレット| kindle | nexus "、** RegexOptions.IgnoreCase **); –

1

ScreenPixelsWidthはいつも640を返す電話機を検出するのに有用ではありません。この作品が見つかりました:

public static bool IsPhoneDevice(this HttpBrowserCapabilitiesBase Browser) 
{ 
     return (Browser.IsMobileDevice && Browser.CanInitiateVoiceCall); 
} 
関連する問題