【问题标题】:How do I detect a mobile browser in a .NET MVC3 application如何在 .NET MVC3 应用程序中检测移动浏览器
【发布时间】:2011-07-11 02:59:27
【问题描述】:

我正在开发一个 .NET MVC3 应用程序。

有没有一种好方法可以检测用户是否在视图中使用移动浏览器(使用 RAZOR)。 如果它是移动浏览器,我想改变显示逻辑。

谢谢!

【问题讨论】:

  • 您可能需要考虑在控制器级别执行此操作,并更改返回的实际视图。
  • 好点。我想这取决于变化的范围。如果它只是包含一个不同的 css 文件,那应该在视图中完成。如果是完全不同的视图,最好将它们完全分开。感谢您的意见。

标签: .net asp.net-mvc-3 razor


【解决方案1】:

MVC3 在 Request.Browser 对象中公开 IsMobileDevice 标志。

所以在你的 Razor 代码中,你可以查询这个变量并进行相应的渲染。

例如,在你看来(剃刀):

@if (Request.Browser.IsMobileDevice) {
  <!-- HTML here for mobile device -->
} else {
  <!-- HTML for desktop device -->
}

【讨论】:

  • 确实如此。我在生产项目中使用它。现在有一些限制,因为移动列表不再保持最新。您可以使用 51degrees.mobi(见下文)更新列表。然后,您仍然可以使用此技术来检测移动浏览器。
  • @WhatsInAName 是 ipad 还是移动设备?
【解决方案2】:

内置的浏览器检测功能不再保持最新状态。看看Scott Hanselman's blog - 有关详细信息,请参阅底部的“更多内容”部分。

来自那篇文章:

自该帖子发布后,爱尔兰 Live.com 团队发布并支持原始移动设备浏览器文件 (MDBF) 已停止生产。移动浏览器设备数据的最佳来源是 WURFL(这是 MDBF 从中提取的地方之一。)

我建议查看 51Degrees.mobi 以获得更准确的检测。另请参阅 Hanselman 引用的 Steve Sanderson blog,了解如何在 MVC3 中实现此功能。

【讨论】:

    【解决方案3】:

    我使用这种方法(对我来说很好)

    if (eDurar.MobileDetect.DeviceType.Any(m => Request.UserAgent.Contains(m)))
    {
        Layout = "~/Views/Shared/_mobileLayout.cshtml";
        @Html.Partial("mobileIndex");
    
    }
    else
    {
        Layout = "~/Views/Shared/_Layout.cshtml";
        @Html.Partial("desktopIndex");
    }
    

    我建议你使用响应式引导程序,避免移动特定页面更好

    【讨论】:

      猜你喜欢
      • 2016-10-17
      • 2011-10-01
      • 2019-10-09
      • 1970-01-01
      • 2013-02-25
      • 2016-12-26
      • 1970-01-01
      • 2011-10-30
      • 2011-03-26
      相关资源
      最近更新 更多