領先技術:在ASP.NET MVC 4中建立為行動裝置最佳化的視圖

來源:互聯網
上載者:User

如果深入探討有關編寫行動裝置網站的常識性考慮因素,會發現其中有一種內在矛盾。一方面,客戶在其 編寫應用程式和網站的方法中強烈要求(或樂於要求)移動優先。另一方面,同一些人又經常稱讚 CSS 媒體 查詢和流體布局。我所發現的矛盾在於經常利用 CSS 媒體查詢和流體布局並未在其他內容之前優先處理移動 方面,它不是一種移動優先的方法。在本文中,我將介紹如何使用伺服器端邏輯為給定裝置呈現最佳的顯示效 果,並介紹 ASP.NET MVC 4 的一種新功能,稱為顯示模式。

問題不在於 CSS 媒體查詢作為一種技術。問題甚至也不在於自適應 Web 設計 (RWD) 作為 CSS 媒體查詢 的支援方法 — 雖然不是這項技術啟發性的宗旨所在。那麼,怎樣將使用 CSS 媒體查詢和流體布局變為一種 “移動優先”的方法?在用於推廣此方法的口號中即可發現端倪: 一個基本代碼可為多個視圖服務。在這個 角度上,使用 CSS(一種用戶端技術)在視圖之間切換,而使用 JavaScript 在 CSS 無法勝任時進一步調整 視圖。

在我看來,此方法中的基本做法是為所有裝置提供相同內容,只調整頁面配置以適合螢幕大小。因此,可 能無法向使用者提供最佳的體驗。我認為,您應在合理的情況下力求僅有一個基本代碼(Web API 的共同基礎) ,但一定要重點關注要支援的每類裝置的具體使用方式。“移動”一詞如今已變得意義狹窄,被智能手機、平 板電腦、膝上型電腦和智能電視等多種類型的裝置取代,更不用說眼鏡顯示器和智能手錶等穿戴式裝置。

大約一年前,我在這個專欄中展示了一種在開發 ASP.NET MVC 網站時採用的伺服器端方法: 用於為 所支援的每類裝置建立臨時視圖(“移動網站開發:標記”msdn.microsoft.com/magazine/jj133814)。 我當時在 ASP.NET MVC 3 的環境中這樣做。ASP.NET MVC 4 完全勝任這項任務,它具有前面提到的顯示模式 ,可使用它輕鬆實現為給定裝置提供最佳視圖和內容的伺服器端邏輯。為了切實有效,此方法要求您儘可能多 地瞭解請求裝置的功能。但是,除了有關螢幕大小和當前方向的基本資料外,在用戶端上檢測不到其他內容。 然後,需要採用裝置資訊的伺服器存放庫。

在 ASP.NET MVC 4 中引入顯示模式

在我開始深入探討顯示模式之前,請讓我事先聲明,這篇文章(以及顯示模式技術本身)主要涉及產生一 個獨一無二的新網站,其中將同一 URL 動態綁定到不同的視圖。如果您已有網站,要提供一個為某些(移動 )裝置最佳化的附屬網站,那完全是另一個話題。您仍可將本專欄作為產生附屬網站的指南,但與現有父網站統 一 URL 需要使用其他工具。

在 ASP.NET MVC 4 中,顯示模式是一項系統功能,該功能擴充視圖引擎的傳統行為,使後者可選取最適合 請求裝置的視圖檔案。在前面提到的 ASP.NET MVC 3 文章中,我為此使用了自訂視圖引擎。在該解決方案 中,我還只能使用 Razor 視圖。通過顯示模式,控制器方法仍將調用,比如說,一個名為 Index 的視圖,如 果已知請求裝置為某種行動裝置,則 ASP.NET MVC 運行時將改為選取一個名為 index.mobile.cshtml 的視圖 檔案。

這是一個大好訊息,因為這表示網站仍可只有一個基本代碼。只需為要支援的每類裝置添加額外的 CSHTML 視圖檔案。為了開始使用顯示模式,我們來看圖 1 中的程式碼範例。

圖 1:支援的顯示模式的標準列表

          <h2>  Display Modes currently active  (@DisplayModeProvider.Instance.Modes.Count mode(s))</h2><ul>@{  foreach(var d in DisplayModeProvider.Instance.Modes)  {    <li>@(String.IsNullOrEmpty(d.DisplayModeId)      ?"default" :d.DisplayModeId)</li>  }}</ul>

圖 1 中代碼中的頁面顯示支援的顯示模式的標準列表。圖 2 顯示由該頁面產生的輸出。

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/aspx/

圖 2:顯示模式的預設列表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.