2014-12-26 72 views
0

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

例如:有一个ActionResult测试,所以当一个人从桌面访问此页面(测试)时,默认情况下会显示桌面视图,但是当一个人从移动设备访问同一页面时,应该显示桌面视图,而不是移动。由于我的网站是自适应的,所以有一个_Layout.Mobile.cshmtml页面,当一个人来自移动时,它会自动呈现。为了避免这个,我已经创造test.Mobile.cshtml页面中,我已设置Layout = null;和复制粘贴的所有_Layout.cshtml HTML,但因为有移动设备我所有的桌面CSS是得到覆盖不顶用媒体查询。

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

回答

0

假设有问题的视图是“完整”页面(意味着它没有布局页面,并且包含格式良好的完整HTML页面),您只需从该视图的头部省略视口元标记。如果你不熟悉的视窗,谷歌有一个关于它的体面的帖子在这里: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。

+0

我忘了提及我甚至做到了这一点,但即使这样也没有帮助。有基于设备宽度写入的jquery覆盖了设计。 –

0

据我了解,这个代码必须位于`_ViewStart.cshtml':

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

所以你需要使用条件if (isDesktopClient || Request.Path == "~/Test")