本主題是ASP.NET在移動設備上展現的方面的內容 css
起初看起來deviceFilters與前面的browserCaps相似。一樣也會關聯到HttpBrowserCapabilities,而在這裏用到的是MobileCapabilities,可是細看後發現browserCaps關注的是瀏覽器,deviceFilters關注的是設備自己。 html
定義了設備篩選器以後,您能夠將其應用於 ASP.NET 移動控件中以定義特定於設備的呈現。 應用的設備篩選器映射到 .aspx 文件中 DeviceSpecific構造內的 <choice> 元素。 而後,您能夠爲這些應用的設備篩選器設置屬性重寫和模板化。 一些特定於設備的自定義示例包括:web
這些方案中的每個都須要根據目標設備是否與 Web.config 文件中的 <deviceFilters> 節匹配來進行篩選。 這些篩選器也可能遍及在應用程序中,而不是隻出如今一個地方。編程
實際上服務端從一個HTTP請求得知這些信息,請求頭確定有附帶。在面前的內容知道,瀏覽器的信息經過對User-Agent的識別,再經過瀏覽器功能定義,把結果存放在HttpBrowserCapabilities中,而這裏對設備功能斷定的就是基於這裏得出的HttpBrowserCapabilities來進行。 瀏覽器
ASP.NET內置的設備功能可查看附表1 ide
能夠從兩種設備篩選器中進行選擇:比較計算器或計算委託。 post
對於簡單的比較,能夠經過提供功能的名稱和要與之比較的值,指定基於比較的篩選器。 在運行時,若是功能值和提供的值相等,則設備篩選器的計算結果爲 true。 布爾值屬性在比較時不區分大小寫;所以,true 和 True 都有效。 其餘屬性比較區分大小寫。 測試
對於更復雜的計算,您能夠經過提供方法的類和方法名指定基於計算委託的篩選器。 在運行時,調用所提供的方法來肯定設備篩選器的計算結果是否爲 true。 ui
在Web.config文件中配置以下 lua
<deviceFilters> <filter name="IsHtml" compare="PreferredRendering" argument="html32" /> <filter name="GPSEnabled" type="MyApplication.MyCapabilityEvaluators,MyApplication" method="IsGPSEnabled" /> </deviceFilters>
對於第一個filter是用比較計算器的,compare特性是指定由比較計算器計算的瀏覽器功能。 該功能能夠是任何內置功能,也能夠是任何其餘自定義功能計算器的名稱。argument特性是指定該功能應與之比較的參數;
對於第二個filter是用計算委託,type是指定提供計算委託的類類型。是類的徹底限定名:(類的全名+","+程序集名稱),method特性是指定提供計算委託的方法。
下面的示例演示如何定義名爲 isHTML32 的設備篩選器。
<filter name="isHTML32" compare="PreferredRenderingType" argument="html32" />
在運行時,此篩選器將當前請求的 MobileCapabilities 實例的 PreferredRenderingType 屬性值與值 html32 進行比較。
下面的示例演示如何定義名爲 GPSEnabled 的新功能。
namespace MyAssembly { publicclass MyCapabilityEvaluators { publicstaticbool IsGPSEnabled( System.Web.Mobile.MobileCapabilities capabilities, String unusedArg) { // processing code } } }
將如下元素添加到適當的 Web.config 文件以添加新功能:
<filter name="GPSEnabled" type="MyNamespace.MyCapabilityEvaluators, MyAssembly" method="IsGPSEnabled" />
若是使用 Filter 屬性指定方法名稱,則該方法必須符合如下原型
public bool methodName( System.Web.Mobile.MobileCapabilities capabilities, String optionalArgument);
若須要獲取設備是否支持指定功能能夠使用如下方式
對於內置的功能除了能夠用MobileCapabilities的屬性進行比較外,還能夠這樣子
((System.Web.Mobile.MobileCapabilities)System.Web.HttpContext.Current.Request.Browser).HasCapability("ScreenBitDepth", "8");
返回的是一個bool值,代表是否具有該功能;
對於自定義的功能,只能經過HasCapability
((System.Web.Mobile.MobileCapabilities)System.Web.HttpContext.Current.Request.Browser).HasCapability("GPSEnabled", null);
HasCapability 方法使用兩個參數:capabilityName,它是功能字典中設備計算方法、屬性或項的名稱;optionalArgument,它是 capabilityName參數須要的任何參數。 HasCapability 方法按照如下順序執行其計算:
注意 |
HasCapability 方法經過將 optionalArgument 參數設置爲 null 來計算 <DeviceSpecific> 和 <Choice> 構造。 |
附表1
下表從適配器開發人員的角度列出了 ASP.NET 移動控件設備屬性及有效的標記語言。 此表還列出對於應用程序邏輯中的常規使用有效、從而適用於全部標記語言的屬性(一般不是呈現標記的屬性)。
Property |
常規使用 |
HTML 和 XHTML |
cHTML |
WML |
是 |
是 |
是 |
是 |
|
否 |
否 |
否 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
是 |
是 |
否 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
否 |
否 |
是 |
是 |
|
否 |
否 |
否 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
是 |
是 |
否 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
是 |
|
否 |
是 |
是 |
是 |
|
否 |
是 |
是 |
是 |
|
否 |
否 |
是 |
否 |
|
否 |
否 |
否 |
是 |
|
否 |
否 |
否 |
是 |
|
否 |
是 |
是 |
是 |
|
否 |
否 |
是 |
否 |
|
是 |
是 |
是 |
是 |
|
否 |
否 |
否 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
是 |
是 |
是 |
是 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
否 |
否 |
是 |
|
是 |
是 |
是 |
是 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
否 |
是 |
否 |
|
否 |
否 |
是 |
否 |
|
否 |
否 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
是 |
是 |
否 |
|
否 |
否 |
是 |
否 |
|
否 |
是 |
是 |
是 |
|
否 |
否 |
是 |
否 |
|
是 |
是 |
是 |
是 |
MSDN參考
移動設備功能(總覽頁)
來自 <https://msdn.microsoft.com/zh-cn/library/wa9x6tza(v=vs.100).aspx>
設備篩選建議
來自 <https://msdn.microsoft.com/zh-cn/library/8xef2eak(v=vs.100).aspx>
設備功能表
來自 <https://msdn.microsoft.com/zh-cn/library/dcwa1kf5(v=vs.100).aspx>
爲多個設備配置 Web 應用程序
來自 <https://msdn.microsoft.com/zh-cn/library/fcs06t52(v=vs.100).aspx>
以編程方式計算功能
來自 <https://msdn.microsoft.com/zh-cn/library/2cf6d1wd(v=vs.100).aspx>
設備計算方法
來自 <https://msdn.microsoft.com/zh-cn/library/hweskhy5(v=vs.100).aspx>