0

我在 MVC4 中创建了一个自适应网站。我知道如何使用 viewswitcher 在整个网站的桌面和移动视图之间切换。我的问题是当有人从移动设备访问该页面时,我想将单个页面切换到桌面视图。

例如:有一个ActionResult测试,所以当一个人从桌面访问这个页面(测试)时,默认情况下会显示桌面视图,但是当一个人再次从移动设备访问同一页面时,应该显示桌面视图而不是移动设备。由于我的网站是自适应的,所以_Layout.Mobile.cshmtml当一个人来自移动设备时,会自动呈现一个页面。为避免这种情况,我创建了test.Mobile.cshtml页面,在该页面中我设置Layout = null;并复制粘贴了所有_Layout.cshtmlhtml,但由于存在移动设备的媒体查询,我的所有桌面 css 都被覆盖,这无济于事。

所以我的问题是如何在桌面和移动设备而不是整个网站之间切换单个页面。所有其他页面都应按原样运行(自适应)。

4

2 回答 2

0

假设有问题的视图是一个“完整”页面(意味着它没有布局页面并且包含一个格式良好、完整的 HTML 页面),您只需要从该视图的头部省略 viewport 元标记。如果您不熟悉视口,谷歌在这里有一篇不错的帖子:https ://developers.google.com/web/fundamentals/layouts/rwd-fundamentals/set-the-viewport

如果您需要“桌面模式”是可切换的,那么只需在视口元素周围添加一个条件:

@if(ViewBag.EnableViewportScaling)
{
    <meta name="viewport" content="width=device-width, initial-scale=1" />
}

我假设您可以在呈现视图标记之前的某个时间向 ViewBag 添加一个布尔属性。

于 2014-12-26T07:14:15.510 回答
0

As I understand, this code must be located in `_ViewStart.cshtml':

@{
  if (isDesktopClient)
      Layout = "~/Views/Shared/_Layout.cshtml";
  else
      Layout = "~/Views/Shared/_Layout.mobile.cshtml";
}

So you need use the condition if (isDesktopClient || Request.Path == "~/Test").

于 2014-12-26T21:41:57.240 回答