我用MVC4创建了一个自适应网站。我知道如何使用viewswitcher在整个网站的桌面和移动视图之间切换。我的问题是,当有人从移动设备访问某个页面时,我希望将该页面切换到桌面视图。
例如:有一个ActionResult测试,所以当一个人从桌面访问此页面(测试)时,默认情况下将显示桌面视图,但当一个人再次从移动设备访问同一页面时,桌面视图应显示而不是移动。因为我的网站是自适应的,所以有一个_Layout.Mobile.cshmtml页面,当一个人来自移动设备时,它会自动呈现。为了避免这种情况,我创建了test.Mobile.cshtml页面,在其中我设置了Layout = null;并复制粘贴了所有的css html,但是由于移动设备有媒体查询,所以我所有的Desktop _Layout.cshtml都被覆盖了,这不起作用。
所以我的问题是如何在桌面和移动设备之间切换单个页面,而不是整个网站。所有其他页面都应该按原样运行(自适应)。
发布于 2014-12-26 15:14:16
假设所讨论的视图是一个“完整”页面(这意味着它没有布局页面,而是一个格式良好的完整HTML页面),您只需要在该视图的头部省略viewport元标记。如果你不熟悉这个视窗,谷歌在这里有一个很不错的帖子:https://developers.google.com/web/fundamentals/layouts/rwd-fundamentals/set-the-viewport
如果您需要“桌面模式”可切换,则只需在viewport元素周围添加一个条件:
@if(ViewBag.EnableViewportScaling)
{
<meta name="viewport" content="width=device-width, initial-scale=1" />
}我假设您可以在呈现视图标记之前的某个时刻向ViewBag添加一个布尔属性。
发布于 2014-12-27 05:41:57
据我所知,此代码必须位于`_ViewStart.cshtml‘中:
@{
if (isDesktopClient)
Layout = "~/Views/Shared/_Layout.cshtml";
else
Layout = "~/Views/Shared/_Layout.mobile.cshtml";
}所以你需要使用条件if (isDesktopClient || Request.Path == "~/Test")。
https://stackoverflow.com/questions/27653760
复制相似问题