11
 if (Request.Browser.IsMobileDevice)
 {
     Response.Redirect("/mobile/Login.htm");`
 }

モバイルを検出すると同時に、モバイルのようにタブレットを検出するには、タブレットがあるかどうかを確認する機能またはデバイスの画面のサイズを確認する機能が必要です。

おかげで、私は ScreenPixelsWidth と ScreenPixelsHeight を使用しました。これは、必要な場合のコードです

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

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

3 に答える 3

21

同様の問題があり、次を使用してみました: 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
于 2014-05-02T20:03:01.120 に答える
8

ScreenPixelsWidth と ScreenPixelsHeight ( http://msdn.microsoft.com/en-us/library/system.web.httpbrowsercapabilities.aspx ) を使用でき、通常バージョンとモバイル バージョンのどちらを使用するかを検討するしきい値を定義できます。レンダリングされます。

この問題に取り組む方法は他にもたくさんありますが、既に HttpBrowserCapabilities クラスを使用しているため、これら 2 つのプロパティを使用することもできます。

于 2013-02-13T10:49:53.087 に答える
2

ScreenPixelsWidth は常に 640 を返すため、電話の検出には役立ちません。私はこれがうまくいくことを発見しました:

public static bool IsPhoneDevice(this HttpBrowserCapabilitiesBase Browser)
{
      return (Browser.IsMobileDevice && Browser.CanInitiateVoiceCall);
}
于 2017-11-27T16:32:47.023 に答える