Mobile 显示平板电脑的桌面版本

Mobile 显示平板电脑的桌面版本,mobile,asp.net-mvc-4,Mobile,Asp.net Mvc 4,如果用户从平板电脑访问站点,我将尝试显示该站点的桌面版本。方法contextCheck_WithDirectMethod确实返回了false,正如它应该返回的那样,但是移动版本仍然显示在我的ipad上。我们将非常感谢您对如何解决此问题的任何帮助 protected void Application_BeginRequest(object sender, EventArgs e) { System.Func<HttpContextBase, bool> cont

如果用户从平板电脑访问站点,我将尝试显示该站点的桌面版本。方法contextCheck_WithDirectMethod确实返回了false,正如它应该返回的那样,但是移动版本仍然显示在我的ipad上。我们将非常感谢您对如何解决此问题的任何帮助

protected void Application_BeginRequest(object sender, EventArgs e)
    {
        System.Func<HttpContextBase, bool> contextCheckDelegate = contextCheck_WithDirectMethod;
        DefaultDisplayMode mobileMode = new DefaultDisplayMode("mobile");
        mobileMode.ContextCondition = contextCheckDelegate;
        DisplayModeProvider.Instance.Modes.Add(mobileMode);
    }
    public bool contextCheck_WithDirectMethod(HttpContextBase objHttpContextBase)
    {

        bool isTablet = false;
        string varBrowserAgent = objHttpContextBase.Request.UserAgent;
        if (!string.IsNullOrEmpty(varBrowserAgent))
        {
            varBrowserAgent = varBrowserAgent.ToString().ToLower();
            if (varBrowserAgent.Contains("ipad") || (varBrowserAgent.Contains("android") && !varBrowserAgent.Contains("mobile")))
            {
                isTablet = true;
                objHttpContextBase.ClearOverriddenBrowser();
            }
        }

        if (!isTablet)
        {
            if (objHttpContextBase.GetOverriddenBrowser().IsMobileDevice)
            {
                return true;
            }
        }

        if (!string.IsNullOrEmpty(varBrowserAgent))
        {
            varBrowserAgent = varBrowserAgent.ToString().ToLower();

            if (objHttpContextBase.Request.Browser.IsMobileDevice == true || varBrowserAgent.Contains("ipod") || varBrowserAgent.Contains("ipad")
             || varBrowserAgent.Contains("iphone") || varBrowserAgent.Contains("android") || varBrowserAgent.Contains("iemobile"))
            {
                if (isTablet)
                    return false;
                else
                    return true;
            }
        }
        return false;
    }
受保护的无效应用程序\u BeginRequest(对象发送方,事件参数e)
{
System.Func contextCheckDelegate=contextCheck_with directmethod;
DefaultDisplayMode mobileMode=新的DefaultDisplayMode(“移动”);
mobileMode.ContextCondition=contextCheckDelegate;
DisplayModeProvider.Instance.Modes.Add(mobileMode);
}
公共bool contextCheck_with directmethod(HttpContextBase objHttpContextBase)
{
bool-isTablet=false;
字符串varBrowserAgent=objHttpContextBase.Request.UserAgent;
如果(!string.IsNullOrEmpty(varBrowserAgent))
{
varBrowserAgent=varBrowserAgent.ToString().ToLower();
if(varBrowserAgent.Contains(“ipad”)| |(varBrowserAgent.Contains(“android”)&&!varBrowserAgent.Contains(“移动”))
{
isTablet=true;
objHttpContextBase.ClearOverridedenBrowser();
}
}
如果(!isTablet)
{
if(objHttpContextBase.GetOverridedBrowser().IsMobileDevice)
{
返回true;
}
}
如果(!string.IsNullOrEmpty(varBrowserAgent))
{
varBrowserAgent=varBrowserAgent.ToString().ToLower();
if(objHttpContextBase.Request.Browser.IsMobileDevice==true | | | varBrowserAgent.Contains(“ipod”)| | varBrowserAgent.Contains(“ipad”)
||varBrowserAgent.Contains(“iphone”)| | varBrowserAgent.Contains(“android”)| | varBrowserAgent.Contains(“iemobile”))
{
如果(isTablet)
返回false;
其他的
返回true;
}
}
返回false;
}

显示模式逻辑按注册顺序查找匹配项。默认移动模式在您添加之前已注册,因此您的新移动模式永远不会被评估

常规模式是在索引0处插入新的显示模式,而不是添加显示模式。而不是:

DisplayModeProvider.Instance.Modes.Add(mobileMode);
使用:

或者,您可以更改浏览器定义(例如C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers),以指示iPad不是移动设备,但这可能会变得复杂


还有一点需要注意:显然。您的设备模式选择逻辑需要考虑这两种情况。

您可以检查平板电脑设备中可用的像素数:

var isTablet = httpContext.Request.Browser.IsMobileDevice && httpContext.Request.Browser.ScreenPixelsWidth > 768
var isTablet = httpContext.Request.Browser.IsMobileDevice && httpContext.Request.Browser.ScreenPixelsWidth > 768