CSS 媒體查詢與流體版面(RWD)雖能適應螢幕尺寸,但無法針對裝置能力(觸控、GPS、相機等)提供差異化體驗。ASP.NET MVC 4 引入顯示模式,讓伺服器端依裝置特性選擇專屬視圖,實現真正的「行動優先」。
控制器回傳 View("Index") 時,執行階段依請求裝置自動尋找對應視圖:
Index.cshtmlIndex.Mobile.cshtmlIndex.{DisplayModeId}.cshtml單一程式碼基礎,僅增加視圖檔案即可支援多裝置。
<h2> 目前啟用的顯示模式 (@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>

於 Application_Start 註冊:
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("iPhone") {
ContextCondition = ctx => ctx.GetOverriddenUserAgent().Contains("iPhone")
});
DisplayModeProvider.Instance.Modes.Insert(1, new DefaultDisplayMode("Tablet") {
ContextCondition = ctx => ctx.GetOverriddenUserAgent().Contains("iPad")
|| ctx.GetOverriddenUserAgent().Contains("Android")
&& !ctx.GetOverriddenUserAgent().Contains("Mobile")
});
僅靠 User-Agent 不足,建議整合 51Degrees、WURFL 或 DeviceAtlas 等裝置資料庫,取得螢幕尺寸、觸控支援、作業系統版本等豐富屬性,精準對應視圖。