我在MVC4中创建了一个自适应网站。我知道如何使用viewswitcher在整个网站的桌面和移动视图之间切换。我的问题是当一个人从移动设备访问该页面时,我想将单个页面切换到桌面视图。
例如:有一个ActionResult
测试,所以当一个人从桌面访问此页面(测试)时,默认情况下会显示桌面视图,但是当一个人再次从移动设备访问同一页面时,桌面视图应该是显示而不是移动。由于我的网站具有自适应性,因此有一个_Layout.Mobile.cshmtml
页面会在某人来自移动设备时自动呈现。为了避免这种情况,我创建了test.Mobile.cshtml
页面,其中我设置了Layout = null;
并复制粘贴了所有_Layout.cshtml
html,但由于有移动设备的媒体查询,所有我的桌面css都被覆盖了没有达到目的。
所以我的问题是如何在桌面和移动设备之间切换单个页面而不是整个网站。所有其他页面应该按原样运行(自适应)。
答案 0 :(得分:0)
假设有问题的观点是"完整"页面(意味着它没有布局页面并包含格式良好的完整HTML页面),您只需要从该视图的头部省略视口元标记。如果您不熟悉视口,Google会在此处发布一篇不错的帖子: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添加一个布尔属性。
答案 1 :(得分:0)
据我了解,此代码必须位于`_ViewStart.cshtml&#39;:
@{
if (isDesktopClient)
Layout = "~/Views/Shared/_Layout.cshtml";
else
Layout = "~/Views/Shared/_Layout.mobile.cshtml";
}
所以你需要使用条件if (isDesktopClient || Request.Path == "~/Test")
。