共用方式為


裝置的特定呈現

更新:2007 年 11 月

雖然 ASP.NET Mobile Web 網頁可以自動呈現到各種裝置上,它們也提供多種方法讓您指定專屬於裝置或裝置類別的內容。這表示 Mobile Web 網頁可以讓您自訂頁面,以便發揮裝置的特殊功能。例如,在不同裝置上以不同方式呈現項目便是常見的需求。ASP.NET 會處理多種適合在各種裝置類型上呈現的隱含格式。然而,在必要時,您也可以讓 ASP.NET 在一個裝置上呈現使用一個字串的標籤 (Label),而在另一個裝置上呈現使用不同字串的標籤。

若要管理這類案例,請在應用程式中包含程式碼,以根據裝置功能查詢的結果設定控制項的屬性。若要為特定類型的裝置自訂 Mobile Web 網頁,請先為網頁定義一組裝置篩選條件,然後使用 <DeviceSpecific><Choice> 建構指定每種裝置類型的篩選條件。

注意事項:

預設的 Visual Studio Mobile 組態檔包含多種預先定義的裝置篩選條件。根據預設,ASP.NET 2.0 不會自動產生行動裝置篩選條件。然而,如果您將 Web 應用程式從先前的 ASP.NET 版本移轉到 ASP.NET 2.0 版,您的裝置篩選條件將會保留在 Web.config 檔中。

使用篩選屬性

使用 Filter 屬性,可以根據裝置能力來評估裝置篩選條件,或是設定特定的篩選條件。

篩選條件名稱必須是頁面上之方法或是相關聯 .ascx 檔的名稱,或是定義於 Web.config 檔 <deviceFilters> 項目中之有效裝置篩選條件的名稱。如果方法名稱是以 Filter 屬性指定,該方法就必須符合下列原型 (Prototype):

public bool methodName(
    System.Web.Mobile.MobileCapabilities capabilities,
    String optionalArgument);

例如,如果 Filter 屬性設定為 myChoiceMethod,這時一定會存在包含下列簽章的方法。

public bool myChoiceMethod(
    System.Web.Mobile.MobileCapabilities capabilities, 
    String optionalArgument
);

當 ASP.NET 評估 <Choice> 項目時,它會檢查該頁面或使用者控制項中是否存在具有該正確簽章的方法。如果不存在,ASP.NET 便會檢查 Web.config 檔的 <deviceFilters> 項目。

使用裝置篩選條件以擴充 MobileCapabilities 類別

將自己的裝置篩選條件加入至 Web.config 檔,便可擴充 MobileCapabilities 類別。設定裝置篩選條件可提供評估機制給兩種類型的篩選條件:以比較為基礎的篩選條件和以評估工具委派為基礎的篩選條件。

以比較為基礎的篩選條件

以比較為基礎的篩選條件會作基本的比較,此時通常是以布林值 (Boolean) 引數為基礎。針於此類型的篩選條件,必須提供功能名稱和您要篩選條件比較的值。在執行階段,如果功能值和您提供的值相等,評估工具就會接手運作。進行比較的布林屬性並不區分大小寫,因此 true 等於 True。其他比較的屬性是區分大小寫的。

以評估工具委派為基礎的篩選條件

對於更複雜的評估,您可指定以評估工具委派為基礎的篩選條件,做法是提供類別和方法的名稱。在執行階段,會呼叫您提供的方法來測試評估工具。您必須寫入和編譯您自己的方法來測試評估工具。或者,您也可以在頁面或使用者控制項中定義方法,再直接從 filter 屬性中參考此方法,如前所述。

Web.config 檔語法

當您在 Web.config 檔中指定裝置篩選條件時,便會將這些篩選條件加入至 <system.web> 區段。若要檢視語法,請參閱 <deviceFilters>。這個語法適用於兩種類型的篩選條件。在下列範例中,第一種篩選條件顯示以比較為基礎的篩選條件,第二種篩選條件則顯示以評估工具委派為基礎的篩選條件:

<system.web>
  <deviceFilters>
    <filter
      name="capability"
      compare="capabilityName"
      argument="argument" />
    <filter
      name="capability"
      type="className"
      method="methodName" />
  </deviceFilters>
</system.web>

MobileCapabilities 物件會在執行階段時評估這些篩選條件。每個裝置篩選條件根據裝置的功能指定評估條件。裝置篩選條件所針對的裝置組合通常不是獨立的;例如,許多裝置可能同時符合 IsColor 和 IsPDA 篩選條件屬性 (Attribute)。

注意事項:

裝置篩選條件名稱是區分大小寫的。

在 <DeviceSpecific><Choice> 建構中,您會指定這些篩選條件的值。例如,下列程式碼會存取定義於 Web.config 檔中的 IsColor 篩選條件屬性。

<DeviceSpecific>
    <Choice Filter="IsColor" ImageUrl="colorImg.gif" />
</DeviceSpecific>

使用 Device-Specific/Choice 建構

<DeviceSpecific><Choice> 建構是可在頁面中插入裝置特定標記的核心建構。為了針對控制項加入裝置特定的標記,您要將 <DeviceSpecific> 項目加入至該控制項的子項目中。控制項只能包含一個 <DeviceSpecific> 項目。

<DeviceSpecific> 項目和 <Choice> 項目可讓您根據進行要求裝置的特性,從 ASP.NET 選擇的值中指定一組值。選擇的值為字串。

<DeviceSpecific> 項目是可存放數種選擇的外部容器 (Container),如下列範例所示:

<mobile:Image runat=server ImageURL="bw.gif">
  <DeviceSpecific>
    <Choice Filter="isColor" ImageURL="colorImg.gif"
      AlternateText="This device cannot display the image." />
    <Choice Filter="isWML11" ImageURL="myImage.wbmp" />
    <Choice ImageURL="monoImage.gif" />
  </DeviceSpecific>
</mobile:Image>

正如先前所述,例如 isColor 這類篩選條件必須在 Web.config 檔中具有對應的項目,或者必須是出現在頁面或使用者控制項中的方法。

使用 Choice 項目

<Choice> 會被放置在 <DeviceSpecific> 項目內以便代表裝置特性/值組,其中裝置特性是從多種來源中取得。<Choice> 會按照在 DeviceSpecific/Choice 建構中的出現順序加以評估。

雖然控制項只能含有一個 <DeviceSpecific> 項目,您仍可以在 <DeviceSpecific> 項目內加入任何數目的 <Choice> 項目。每個 <Choice> 項目可以包含下列各項:

  • 篩選條件名稱,指定要評估的裝置篩選條件。如果省略篩選條件名稱,就會根據預設選取選項。

  • 其他會覆寫父控制項屬性的屬性。

  • 控制項的樣板定義。

ASP.NET 會按順序審查每個選項,並評估以篩選條件名稱指定的篩選條件,以選取要使用的 <Choice> 項目。如果篩選條件符合目前的目標裝置 (即評估為 true),該選項就會被選中。控制項就會套用在選擇中指定覆寫的任何屬性,並可使用在呈現中定義的任何樣板。

請參閱

其他資源

開發 ASP.NET Mobile Web 網頁