如何检测请求是否来自我的asp.net MVC 3中的移动浏览器

qal*_*ver 20 c# mobile asp.net-mvc-3

我想要实现的是简单的; 在我的Web应用程序中的所有视图中,我只有两个剃刀视图,我为他们创建了一个移动版本.因此,如果他们从移动设备访问应用程序,我需要将用户重定向到这些视图.我在控制器级别上尝试了以下操作,但是当我在不同的移动设备上运行测试时,它没有重定向用户: -

if (Request.Browser.IsMobileDevice)
            {
                return View("MobileStudentStartAssessment");
            }
            else {
                return View("StudentStartAssessment");
            }
Run Code Online (Sandbox Code Playgroud)

那么我可以采用另一种可以检测大多数移动设备的方法吗?谢谢

BFr*_*ree 26

您可以使用该Request.Browser.IsMobileDevice物业.

  • @ qalife4ever:试试这个:http://owenbrady.net/browsercaps/OceanMobile.v4.browser.xml你正在测试哪个设备? (2认同)

dle*_*lev 18

假设您的移动视图适用于所有移动设备(而不是具有特定于设备的视图),您可以检查用户代理字符串以查看应返回的视图.这只是一个例子,但应该让你走得很远:

private static string[] mobileDevices = new string[] {"iphone","ppc",
                                                      "windows ce","blackberry",
                                                      "opera mini","mobile","palm",
                                                      "portable","opera mobi" };

public static bool IsMobileDevice(string userAgent)  
{  
    // TODO: null check
    userAgent = userAgent.ToLower();  
    return mobileDevices.Any(x => userAgent.Contains(x));
}
Run Code Online (Sandbox Code Playgroud)

然后,在您的控制器操作中,您可以调用:

if (MobileHelper.IsMobileDevice(Request.UserAgent))
{
    // Return mobile view
}
Run Code Online (Sandbox Code Playgroud)

如果您仍然发现它无法识别您的移动浏览器,请检查调试器中的用户代理字符串,看看是否有可以使用的标识符.


Dan*_*usk 12

我使用nuget的51degrees.mobi包.这在检测所有不同的移动设备时更准确.它马上工作了.

当浏览器是移动设备时,我将其重定向到其他区域.

我还建议阅读史蒂夫桑德森博客的主题.