ASP.NET MVC 4中如何为不同的浏览器自适应布局和视图
在ASP.NET MVC 4中,可以很簡單地實(shí)現(xiàn)針對不同的瀏覽器自適應(yīng)布局和視圖。這個得歸功于MVC中的"約定甚于配置"的設(shè)計理念。
默認(rèn)的自適應(yīng)
MVC 4自動地為移動設(shè)備瀏覽器和PC設(shè)備瀏覽器進(jìn)行自適應(yīng)。針對布局頁面,默認(rèn)的文件名為_Layout.cshtml,這個默認(rèn)會被所有的瀏覽器使用。但如果我們希望在移動設(shè)備上面,呈現(xiàn)一個不同的布局,只需要添加一個名稱為_Layout.Mobile.cshtml的布局頁面就可以了。同樣的規(guī)則,也適用于普通的視圖頁面。例如Index.cshtml默認(rèn)是被所有的瀏覽器使用的,但如果添加了Index.Mobile.cshtml,則在移動設(shè)備上面,會自動使用這個新的視圖進(jìn)行呈現(xiàn)。如下圖所示
那么,為什么會能夠自動實(shí)現(xiàn)這樣的功能呢?或者我們該問問,怎么樣才能區(qū)分移動設(shè)備瀏覽器呢?其實(shí),這個說起來是不難的
下面這個文章介紹了關(guān)于瀏覽器檢測的一些基本概念http://msdn.microsoft.com/zh-cn/library/x3k2ssx2(v=vs.100).aspx
在ASP.NET MVC中,是在什么位置,通過什么樣的方式來進(jìn)行這個檢測,并且據(jù)此進(jìn)行布局或視圖的選擇的呢?
通過分析源代碼(http://aspnetwebstack.codeplex.com/ ),我們可以在下面的代碼中發(fā)現(xiàn)端倪
所以,這個功能是在DisplayModeProvider這個類型中實(shí)現(xiàn)的。它默認(rèn)注冊了兩個所謂的DefaultDisplayMode,其中第一個是有條件判斷的,根據(jù)IsMobileDevice屬性判斷是不是移動設(shè)備瀏覽器,如果是,則使用一個固定的前綴Mobile。這個DefaultDisplayMode類型,會自動做路徑的Transform。
?
自定義適應(yīng)規(guī)則
?
如果理解了上面的原理,我們就可以根據(jù)需要添加自己的規(guī)則。例如,我們可以為iPhone設(shè)備添加一個特定的顯示模型,可以修改global.asax中的代碼。
?
這樣的話,只要添加下面的布局或者視圖頁面的話,就可以很簡單地實(shí)現(xiàn)針對iPhone設(shè)備的呈現(xiàn)了。
轉(zhuǎn)載于:https://www.cnblogs.com/chenxizhang/p/3840733.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET MVC 4中如何为不同的浏览器自适应布局和视图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript代码解释执行过程
- 下一篇: cocos2dx引用计数