日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

deviceFilters与设备过滤

發(fā)布時間:2024/4/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 deviceFilters与设备过滤 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本主題是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í)行其計算:

  • 它檢查?capabilityName?值是否是 Web.config 文件中指定的設(shè)備篩選器的名稱。
  • 注意

    HasCapability?方法通過將?optionalArgument?參數(shù)設(shè)置為?null?來計算?<DeviceSpecific>?和?<Choice>?構(gòu)造。

  • 如果第 1 步中的測試返回?true?并且篩選器是委托計算器(使用自定義方法計算指定數(shù)據(jù)的篩選器),則?HasCapability?方法將使用optionalArgument?參數(shù)中提供的參數(shù)調(diào)用委托并返回結(jié)果。
  • 如果第 1 步中的測試返回?true?并且篩選器是比較計算器(將功能名與某個指定的值進(jìn)行比較的篩選器),則?HasCapability?方法將使用該功能名和計算器中提供的參數(shù)(忽略所有原始?optionalArgument?參數(shù))調(diào)用其本身并返回結(jié)果。
  • 如果?MobileCapabilities?對象具有名為?capabilityName?的屬性,則?HasCapability?方法將此屬性強(qiáng)制轉(zhuǎn)換為字符串并在optionalArgument?值等于該字符串時返回?true。?布爾型比較不區(qū)分大小寫;其他比較區(qū)分大小寫。?因此,"true"等同于"True",但"left"不等于"Left"。
  • 如果不存在任何?capabilityName?屬性,則?HasCapability?方法將在與?MobileCapabilities?對象關(guān)聯(lián)的功能字典中進(jìn)行查找。?如果capabilityName?屬性存在,則?HasCapability?方法將其與?optionalArgument?參數(shù)進(jìn)行比較并返回結(jié)果。?因為字典可以維護(hù)字符串,所以無需進(jìn)行強(qiáng)制轉(zhuǎn)換。
  • 如果這些測試失敗,HasCapability?方法將引發(fā)?ArgumentOutOfRangeException?異常。
  • ? ?

    ? ?

    ? ?

    附表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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。