2014-12-26 78 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")