Utilizzo di modelli specifici di dispositivo

Quando si uniscono linguaggi con tag specifici di dispositivo ai controlli mobili ASP .NET, è necessario assicurare la congruenza in base agli elementi di cui i controlli mobili eseguono il rendering. Il rilevamento e l'adattamento intelligente per tag misti specifici di dispositivo e indipendenti dal dispositivo non è supportato.

Nell'esempio non corretto che segue, il contenuto dei tag <ContentTemplate> viene inviato al dispositivo se il filtro corrisponde alla relativa funzionalità. Osservare l'impostazione alignment nel primo controllo Panel e il controllo Label. Poiché il controllo Label è all'interno di un tag WML <td>, il rendering del tag <p> generato per il controllo Label viene eseguito in modo non corretto dal browser in quanto è all'interno del tag <td>.

<mobile:Panel runat=server alignment="right">
<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" 
   alignment="left">
</Mobile:Label>
<mobile:Panel runat=server>
   <DeviceSpecific>
      <Choice Filter="isWML11">
         <ContentTemplate>
</td>
<td>
         </ContentTemplate>
      </Choice>
   </Devicespecific> 
</mobile:panel>

Una volta selezionata un'impostazione non predefinita per l'allineamento, viene generato un tag <p> per ogni controllo successivo. 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 tal caso il controllo Label non eredita l'allineamento dal primo controllo Panel, pertanto genera un tag <p> per l'allineamento. Tuttavia non è possibile aggiungere un tag <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 controllo Label nel modello. Per il rendering WML, utilizzare il tag <table align="left"> nel controllo Panel.

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

Attributi personalizzati | Suggerimenti per l'applicazione di filtri di dispositivo | Metodo HasCapability | Metodi di valutazione di dispositivi | Funzionalità estese del browser | MobileControl | Informazioni sulle regole del mapping dei dati per il provider di configurazione