Utilizzo di modelli specifici di dispositivo

Aggiornamento: novembre 2007

Quando si utilizzano tag specifici di dispositivi diversi insieme ai controlli mobili ASP.NET, è necessario garantire la congruenza in base agli elementi di cui i controlli mobili eseguono il rendering. Il rilevamento e l'adattamento intelligente per codici misti specifici di dispositivo e indipendenti dal dispositivo non è supportato.

Esempio di combinazione errata

Nell'esempio non corretto riportato di seguito il contenuto degli elementi <ContentTemplate> viene inviato al dispositivo se il filtro corrisponde alla relativa funzionalità. Osservare la proprietà alignment del primo controllo Panel e del controllo Label. Poiché il controllo Label è contenuto in un elemento <td> WML, il browser esegue un rendering errato dell'elemento <p> generato per il controllo Label perché contenuto nel tag <td>.

<mobile:panel  alignment="right">
  <DeviceSpecific>
    <Choice Filter="isWML11">
      <ContentTemplate>
        <table columns="2" align="LR">
        <tr>
          <td>
            </ContentTemplate>
           </Choice>
           </Devicespecific>
           </mobile:panel>
    <mobile:label id="label1"  text="HELLO HOW ARE YOU" alignment="left" />
    <mobile:panel >
         <DeviceSpecific>
           <Choice Filter="isWML11">
            <ContentTemplate>
              </td>
          <td>
         </ContentTemplate>
        </Choice>
  </Devicespecific>
</mobile:panel>

Dopo aver definito un'impostazione non predefinita per alignment, viene eseguito il rendering di un elemento <p> per ogni controllo creato. Viene generato l'errore seguente:

Digest Compile failed.
WML_1.1.DTD(9) : error: Close tag 'p' does not match start tag 'td'
WML_1.1.DTD(9) : error: Invalid element 'p' in content of 'tr'. 
    Expected td
WML_1.1.DTD(9) : error: Invalid element 'p' in content of 'tr'.   
    Expected td
WML_1.1.DTD(10) : error: Close tag 'td' does not match start tag 'p'

In questo caso, non ereditando l'allineamento dal primo controllo Panel, il controllo Label genera un elemento <p> per l'allineamento. Non è tuttavia possibile aggiungere un elemento <p> in questa situazione. Non si tratta di una situazione usuale ma è possibile eludere il problema contrassegnando il controllo Label come visibile solo se non viene eseguito il rendering in un dispositivo basato su WML e specificando il testo del controllo Label nel modello. Utilizzare il tag <table align="left"> nel controllo Panel per il rendering WML.

Nota:

È possibile controllare l'allineamento generale di una tabella ma non quello di singole celle.

Esempio corretto

Nell'esempio che segue vengono corretti gli errori precedenti e vengono inserite aggiunte quali direttive di pagina e controlli di form.

<%@ Page Inherits="System.Web.UI.MobileControls.MobilePage" Language ="c#" %>
<Mobile:Form runat=server ID="OrderForm" Title="Submit your Order For pizza">
    <Mobile:link runat=server ID="LinkWN1" Text="What's On" Alignment="center">
</Mobile:link>
   <mobile:Panel runat=server>
      <DeviceSpecific>
         <Choice Filter="isWML11">
            <ContentTemplate>
              <table columns="2" 
                 align="LR">
<tr><td>
             </ContentTemplate>
         </Choice>
      </Devicespecific>
   </mobile:panel>
   <Mobile:Label id="label1" runat=server 
      Text="HELLO HOW ARE YOU">
   </Mobile:Label>
   <mobile:Panel runat=server>
      <DeviceSpecific>
         <Choice Filter="isWML11">
            <ContentTemplate>
</td><td>
            </ContentTemplate>
         </Choice>
     </Devicespecific>
   </mobile:panel>
   <mobile:Panel runat=server>
      <DeviceSpecific>
         <Choice Filter="isWML11">
            <ContentTemplate>
</td></tr>
              </table>
            </ContentTemplate>
         </Choice>
      </Devicespecific>
</mobile:panel>
</Mobile:Form>

<Mobile:Form runat=server ID="WhatisOn" Title="Contains">
<Mobile:Label StyleReference="Title" ID="LblWO2" runat=server Text="Toppings"></Mobile:Label>
</Mobile:Form>

Vedere anche

Concetti

Attributi personalizzati per controlli mobili

Suggerimenti per l'applicazione di filtri di periferica

Metodi di valutazione dei dispositivi

Funzionalità estese del browser

Riferimenti

HasCapability

MobileControl