2013-02-13 99 views
10
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"); 
      } 
+1

我编辑了你的标题。请参见“[应的问题包括‘标签’,在他们的头衔?(http://meta.stackexchange.com/questions/19190/)”,这里的共识是“不,他们不应该”。 – 2013-02-13 10:42:53

+0

@acb该链接不适用于这种情况。这是我们正在讨论的浏览器。 – Icarus 2013-02-13 10:53:07

回答

7

您可以使用ScreenPixelsWidth和ScreenPixelsHeight(http://msdn.microsoft.com/en-us/library/system.web.httpbrowsercapabilities.aspx),你可以定义你是否考虑阈值定期或移动版本应该被渲染。

还有更多的方法来解决这个问题,但既然你已经在使用的HttpBrowserCapabilities类,你还不如用这2个属性。

+1

谢谢“S的工作我用ScreenPixelsWidth和ScreenPixelsHeight这是代码,如果任何需要它'INT怀特= Request.Browser.ScreenPixelsWidth; INT高度= Request.Browser.ScreenPixelsHeight; 如果(Request.Browser.IsMobileDevice &&怀特<720 &&高度<1280){ Response.Redirect的 ( “/移动/ Login.htm”); }' – 2013-02-13 14:02:17

+0

@VovaPotapov优秀高兴阅读是为你工作 – Icarus 2013-02-13 14:26:30

+0

我想办法举起比代理字符串更好。模式匹配 – 2013-09-02 13:56:35

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? – 2014-06-14 21:06:36

+2

@IanCampbell是的,因为您可以一手携带它们!更有可能MS留给它的扩展名为[51Degrees .mobi](https://www.nuget.org/packages/51Degrees.mobi)来捡起懒散_(尽管我认为该插件的免费版本仍然会将所有内容报告为移动版)_ – drzaus 2014-10-28 15:32:54

+0

正则表达式应该被实例化方式:'Regex r = new Regex(“ipad | android | android 3.0 | xoom | sch-i800 | playbook | tablet | kindle | nexus”,** RegexOptions.IgnoreCase **);' – 2015-03-29 16:05:40

1

ScreenPixelsWidth总是返回640那么是不是在检测手机有用。我发现这个作品:

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