程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 領先技術:在ASP.NET MVC 4中創建為移動設備優化的視圖

領先技術:在ASP.NET MVC 4中創建為移動設備優化的視圖

編輯:關於ASP.NET

如果深入探討有關編寫移動設備網站的常識性考慮因素,會發現其中有一種內在矛盾。一方面,客戶在其 編寫應用程序和網站的方法中強烈要求(或樂於要求)移動優先。另一方面,同一些人又經常稱贊 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 顯示由該頁面生成的輸出。

查看本欄目

圖 2:顯示模式的默認列表

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved