如何检测平板电脑(任何)请求?

时间:2013-02-13 10:41:48

标签: c# asp.net

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

要检测手机,但同时检测手机平板电脑,我需要检查平板电脑或功能是否检查设备屏幕大小的功能。

感谢“s工作我使用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");
            }

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:8)

您可以使用ScreenPixelsWidth和ScreenPixelsHeight(http://msdn.microsoft.com/en-us/library/system.web.httpbrowsercapabilities.aspx),您可以定义一个阈值,用于考虑是否应该呈现常规版本或移动版本。

还有很多方法可以解决这个问题,但由于你已经在使用HttpBrowserCapabilities类,所以你也可以使用这两个属性。

答案 2 :(得分:1)

ScreenPixelsWidth始终返回640,因此在检测手机时无用。我发现这有效:

public static bool IsPhoneDevice(this HttpBrowserCapabilitiesBase Browser)
{
      return (Browser.IsMobileDevice && Browser.CanInitiateVoiceCall);
}