deviceFilters与设备过滤
本主題是ASP.NET在移動設(shè)備上展示的方面的內(nèi)容
? ?
起初看起來deviceFilters與前面的browserCaps類似。同樣也會關(guān)聯(lián)到HttpBrowserCapabilities,而在這里用到的是MobileCapabilities,但是細(xì)看后發(fā)現(xiàn)browserCaps關(guān)注的是瀏覽器,deviceFilters關(guān)注的是設(shè)備本身。
定義了設(shè)備篩選器之后,您可以將其應(yīng)用于 ASP.NET 移動控件中以定義特定于設(shè)備的呈現(xiàn)。?應(yīng)用的設(shè)備篩選器映射到 .aspx 文件中?DeviceSpecific構(gòu)造內(nèi)的?<choice>?元素。?然后,您可以為這些應(yīng)用的設(shè)備篩選器設(shè)置屬性重寫和模板化。?一些特定于設(shè)備的自定義示例包括:
- 重寫控件的屬性,例如根據(jù)顯示功能為?Image?控件選擇不同的圖像。
- 對不同的移動設(shè)備使用不同的呈現(xiàn)樣式。
- 在設(shè)備(例如 Pocket PC)上使用模板實現(xiàn)更豐富的呈現(xiàn)。
這些方案中的每一個都需要根據(jù)目標(biāo)設(shè)備是否與 Web.config 文件中的?<deviceFilters>?節(jié)匹配來進(jìn)行篩選。?這些篩選器也可能遍布在應(yīng)用程序中,而不是只出現(xiàn)在一個地方。
實際上服務(wù)端從一個HTTP請求得知這些信息,請求頭肯定有附帶。在面前的內(nèi)容知道,瀏覽器的信息通過對User-Agent的識別,再通過瀏覽器功能定義,把結(jié)果存放在HttpBrowserCapabilities中,而這里對設(shè)備功能判定的就是基于這里得出的HttpBrowserCapabilities來進(jìn)行。
ASP.NET內(nèi)置的設(shè)備功能可查看附表1
可以從兩種設(shè)備篩選器中進(jìn)行選擇:比較計算器或計算委托。
對于簡單的比較,可以通過提供功能的名稱和要與之比較的值,指定基于比較的篩選器。?在運行時,如果功能值和提供的值相等,則設(shè)備篩選器的計算結(jié)果為?true。?布爾值屬性在比較時不區(qū)分大小寫;因此,true?和?True?都有效。?其他屬性比較區(qū)分大小寫。
對于更復(fù)雜的計算,您可以通過提供方法的類和方法名指定基于計算委托的篩選器。?在運行時,調(diào)用所提供的方法來確定設(shè)備篩選器的計算結(jié)果是否為?true。
在Web.config文件中配置如下
<deviceFilters> <filter name="IsHtml" compare="PreferredRendering" argument="html32" /> <filter name="GPSEnabled" type="MyApplication.MyCapabilityEvaluators,MyApplication" method="IsGPSEnabled" /> </deviceFilters>?對于第一個filter是用比較計算器的,compare特性是指定由比較計算器計算的瀏覽器功能。 該功能可以是任何內(nèi)置功能,也可以是任何其他自定義功能計算器的名稱。argument特性是指定該功能應(yīng)與之比較的參數(shù);
對于第二個filter是用計算委托,type是指定提供計算委托的類類型。是類的完全限定名:(類的全名+","+程序集名稱),method特性是指定提供計算委托的方法。
下面的示例演示如何定義名為?isHTML32?的設(shè)備篩選器。
<filter name="isHTML32" compare="PreferredRenderingType" argument="html32" />?在運行時,此篩選器將當(dāng)前請求的 MobileCapabilities 實例的 PreferredRenderingType 屬性值與值 html32 進(jìn)行比較。
下面的示例演示如何定義名為 GPSEnabled 的新功能。
namespace MyAssembly { publicclass MyCapabilityEvaluators { publicstaticbool IsGPSEnabled( System.Web.Mobile.MobileCapabilities capabilities, String unusedArg) { // processing code } } }將以下元素添加到適當(dāng)?shù)?Web.config 文件以添加新功能:
<filter name="GPSEnabled" type="MyNamespace.MyCapabilityEvaluators, MyAssembly" method="IsGPSEnabled" />如果使用?Filter?屬性指定方法名稱,則該方法必須符合以下原型
public bool methodName( System.Web.Mobile.MobileCapabilities capabilities, String optionalArgument);若需要獲取設(shè)備是否支持指定功能可以使用以下方式
對于內(nèi)置的功能除了可以用MobileCapabilities的屬性進(jìn)行比較外,還可以這樣子
((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?方法使用兩個參數(shù):capabilityName,它是功能字典中設(shè)備計算方法、屬性或項的名稱;optionalArgument,它是?capabilityName參數(shù)需要的任何參數(shù)。?HasCapability?方法按照以下順序執(zhí)行其計算:
| 注意 |
| HasCapability?方法通過將?optionalArgument?參數(shù)設(shè)置為?null?來計算?<DeviceSpecific>?和?<Choice>?構(gòu)造。 |
? ?
? ?
? ?
附表1
下表從適配器開發(fā)人員的角度列出了 ASP.NET 移動控件設(shè)備屬性及有效的標(biāo)記語言。?此表還列出對于應(yīng)用程序邏輯中的常規(guī)使用有效、從而適用于所有標(biāo)記語言的屬性(通常不是呈現(xiàn)標(biāo)記的屬性)。
| Property | 常規(guī)使用 | HTML 和 XHTML | cHTML | WML |
| Browser | 是 | 是 | 是 | 是 |
| CanCombineFormsInDeck | 否 | 否 | 否 | 是 |
| CanInitiateVoiceCall | 是 | 是 | 是 | 是 |
| CanRenderEmptySelects | 是 | 是 | 是 | 是 |
| CanRenderInputAndSelectElementsTogether | 否 | 否 | 否 | 是 |
| CanRenderMixedSelects | 否 | 否 | 否 | 是 |
| CanRenderOneventAndPrevElementsTogether | 否 | 否 | 否 | 是 |
| CanRenderPostBackCards | 否 | 否 | 否 | 是 |
| CanRenderSetvarZeroWithMultiSelectionList | 否 | 否 | 否 | 是 |
| CanSendMail | 是 | 是 | 是 | 是 |
| DefaultSubmitButtonLimit | 是 | 是 | 是 | 是 |
| GatewayMajorVersion | 是 | 是 | 是 | 是 |
| GatewayMinorVersion | 是 | 是 | 是 | 是 |
| GatewayVersion | 是 | 是 | 是 | 是 |
| HasBackButton | 否 | 否 | 否 | 是 |
| HidesRightAlignedMultiselectScrollbars | 否 | 是 | 是 | 否 |
| InputType | 是 | 是 | 是 | 是 |
| IsColor | 是 | 是 | 是 | 是 |
| IsMobileDevice | 是 | 是 | 是 | 是 |
| Item | 是 | 是 | 是 | 是 |
| MaximumRenderedPageSize | 否 | 否 | 是 | 是 |
| MaximumSoftkeyLabelLength | 否 | 否 | 否 | 是 |
| MobileDeviceManufacturer | 是 | 是 | 是 | 是 |
| MobileDeviceModel | 是 | 是 | 是 | 是 |
| NumberOfSoftkeys | 是 | 是 | 是 | 是 |
| PreferredImageMime | 是 | 是 | 是 | 是 |
| PreferredRenderingMime | 是 | 是 | 是 | 是 |
| PreferredRenderingType | 是 | 是 | 是 | 是 |
| RendersBreakBeforeWmlSelectAndInput | 否 | 否 | 否 | 是 |
| RendersBreaksAfterHtmlLists | 否 | 是 | 是 | 否 |
| RendersBreaksAfterWmlAnchor | 否 | 否 | 否 | 是 |
| RendersBreaksAfterWmlInput | 否 | 否 | 否 | 是 |
| RendersWmlDoAcceptsInline | 否 | 否 | 否 | 是 |
| RendersWmlSelectsAsMenuCards | 否 | 否 | 否 | 是 |
| RequiredMetaTagNameValue | 否 | 是 | 是 | 否 |
| RequiresContentTypeMetaTag | 否 | 是 | 是 | 否 |
| RequiresAttributeColonSubstitution | 否 | 是 | 是 | 否 |
| RequiresHtmlAdaptiveErrorReporting | 否 | 是 | 是 | 是 |
| RequiresLeadingPageBreak | 否 | 是 | 是 | 是 |
| RequiresNoBreakInFormatting | 否 | 是 | 是 | 是 |
| RequiresOutputOptimization | 否 | 否 | 是 | 否 |
| RequiresPhoneNumbersAsPlainText | 否 | 否 | 否 | 是 |
| RequiresSpecialViewStateEncoding | 否 | 否 | 否 | 是 |
| RequiresUniqueFilePathSuffix | 否 | 是 | 是 | 是 |
| RequiresUniqueHtmlCheckboxNames | 否 | 否 | 是 | 否 |
| RequiresUniqueHtmlInputNames | 是 | 是 | 是 | 是 |
| RequiresUrlEncodedPostfieldValues | 否 | 否 | 否 | 是 |
| ScreenBitDepth | 是 | 是 | 是 | 是 |
| ScreenCharactersHeight | 是 | 是 | 是 | 是 |
| ScreenCharactersWidth | 是 | 是 | 是 | 是 |
| ScreenPixelsHeight | 是 | 是 | 是 | 是 |
| ScreenPixelsWidth | 是 | 是 | 是 | 是 |
| SupportsAccesskeyAttribute | 否 | 是 | 是 | 否 |
| SupportsBodyColor | 否 | 是 | 是 | 否 |
| SupportsBold | 否 | 是 | 是 | 否 |
| SupportsCacheControlMetaTag | 否 | 否 | 否 | 是 |
| SupportsCss | 是 | 是 | 是 | 是 |
| SupportsDivAlign | 否 | 是 | 是 | 否 |
| SupportsDivNoWrap | 否 | 是 | 是 | 否 |
| SupportsFontColor | 否 | 是 | 是 | 否 |
| SupportsFontName | 否 | 是 | 是 | 否 |
| SupportsFontSize | 否 | 是 | 是 | 否 |
| SupportsImageSubmit | 否 | 是 | 是 | 否 |
| SupportsIModeSymbols | 否 | 否 | 是 | 否 |
| SupportsInputIStyle | 否 | 否 | 是 | 否 |
| SupportsInputMode | 否 | 否 | 是 | 否 |
| SupportsItalic | 否 | 是 | 是 | 否 |
| SupportsJPhoneMultiMediaAttributes | 否 | 是 | 是 | 否 |
| SupportsJPhoneSymbols | 否 | 否 | 是 | 否 |
| SupportsQueryStringInFormAction | 否 | 是 | 是 | 是 |
| SupportsSelectMultiple | 否 | 否 | 是 | 否 |
| SupportsUncheck | 是 | 是 | 是 | 是 |
? ?
MSDN參考
移動設(shè)備功能(總覽頁)
來自 <https://msdn.microsoft.com/zh-cn/library/wa9x6tza(v=vs.100).aspx>
? ?
設(shè)備篩選建議
來自 <https://msdn.microsoft.com/zh-cn/library/8xef2eak(v=vs.100).aspx>
? ?
設(shè)備功能表
來自 <https://msdn.microsoft.com/zh-cn/library/dcwa1kf5(v=vs.100).aspx>
? ?
為多個設(shè)備配置 Web 應(yīng)用程序?
來自 <https://msdn.microsoft.com/zh-cn/library/fcs06t52(v=vs.100).aspx>
? ?
以編程方式計算功能
來自 <https://msdn.microsoft.com/zh-cn/library/2cf6d1wd(v=vs.100).aspx>
? ?
設(shè)備計算方法
來自 <https://msdn.microsoft.com/zh-cn/library/hweskhy5(v=vs.100).aspx>
? ?
轉(zhuǎn)載于:https://www.cnblogs.com/HopeGi/p/5880294.html
總結(jié)
以上是生活随笔為你收集整理的deviceFilters与设备过滤的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 入门级前端 简单的网页书写
- 下一篇: 一对多双向关联关系