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 类,您不妨使用这两个属性。

于 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 回答