2016-07-12 88 views
5

在.NET Core文檔中有一個標題爲「構建移動特定視圖」的頁面,但正在構建中:https://docs.asp.net/en/latest/mvc/views/mobile.htmlMobile Specific Views/Device Detection

有沒有人對構建移動視圖或成功進行設備檢測有所瞭解?

+6

在舊的ASP.NET MVC框架中曾經有內置檢測功能,您可以將其命名爲「MyView.cshtml」和「MyView.iOS.cshtml」等類似的視圖,並根據其用戶代理商。但是這種做法現在很沮喪。製作適用於所有設備的響應式設計會更好。例如,尋找「響應式設計引導」。 Bootstrap最初是由Twitter開發的,以實現響應式設計 – Tseng

+0

很可能@Tseng就在這裏,但僅供參考(因爲我沒有關於響應式設計: - ))...如果您仍想遵循「MyView.cshtml 「和」MyView.iOS.cshtml「,那麼你可以看看MVC的'LanguageViewLocationExpander'如何工作,因爲這看起來類似... –

+0

@Tseng如果你想添加你評論作爲答案,我會標記爲接受,因爲這是每個人都在說。 –

回答

1

基於瀏覽器的用戶代理服務特定視圖是一個過時的概念,因爲它沒有充分說明設備的功能。例如,iPhone和iPad具有不同的屏幕尺寸,甚至移動瀏覽器也允許更改用戶代理。

這個新概念被稱爲響應式設計,其中一個創建一個適合並顯示/隱藏特定元素的單個頁面,基於可用的屏幕寬度。一個流行的響應式設計CSS框架是Bootstrap,最初由Twitter開發,後來開源。

Here是響應式設計的一個例子。當您轉到site並更改瀏覽器的寬度時,設計更新以及從3到2到1列設計,使用瀏覽器或移動設備(如「漢堡」菜單)進行導航。

+1

大部分情況都是如此,但有些情況下,我們應該爲小屏幕發送不同的DOM到手機,而不是僅僅隱藏/顯示。 – martonx

+3

在某些情況下,簡單的響應式設計無效。在某些情況下,這會導致真正的大型網站資產大小,從而導致初始負載緩慢。還有一件事是JS--對於大多數擁有大量JS代碼的現代網站,但是一些內容很重的網站(新聞聚合器,電子商務)可能不需要在移動設備上擁有所有這些類型的內容,所以我們可以擦除它在服務器端。 –

1

此功能實際上並未由微軟實施。有對夫婦爲這個問題進行公開討論:

https://github.com/aspnet/Mvc/issues/4877

https://github.com/aspnet/Razor/issues/751

由於從他們通用的答案 - 使用自適應網頁設計和CSS媒體查詢(從我的角度來看是不完美的答案團隊自稱建立一般網絡框架)。 有作爲拉請求此功能的實現存在 - https://github.com/aspnet/Mvc/pull/4878

由於該拉的請求似乎被遺忘了,我提取該代碼放到單獨的項目,您可在 https://github.com/laskoviymishka/MvcDeviceDetector

您可以使用此實現(這很容易添加到MVC項目中)或者實現它本身。這很容易 - 你只需要實施併爲此自己的IViewLocationExpander