Condividi tramite


Rendering specifico di dispositivo

Aggiornamento: novembre 2007

Sebbene sia possibile eseguire il rendering automatico delle pagine Web ASP.NET per dispositivi mobili su un'ampia gamma di dispositivi, queste pagine consentono di indicare contenuto specifico per un dispositivo o una classe di dispositivi. Le pagine Web per dispositivi mobili consentono quindi di eseguire personalizzazioni grazie alle quali è possibile sfruttare al meglio le particolari funzionalità di un dispositivo. Un comune requisito ad esempio è quello di eseguire il rendering di alcuni elementi in modo diverso a seconda dei dispositivi. ASP.NET consente di gestire molte caratteristiche di formattazione implicite relative al rendering in una vasta gamma di tipi di dispositivi. Se necessario, è tuttavia possibile fare in modo che ASP.NET esegua il rendering di un'etichetta utilizzando una stringa su un dispositivo e un'altra stringa su un altro dispositivo.

Per gestire situazioni di questo tipo, includere nelle applicazioni codice per impostare le proprietà dei controlli in base ai risultati delle query sulle funzionalità dei dispositivi. Per personalizzare una pagina Web per dispositivi mobili per tipi specifici di dispositivi, definire un insieme di filtri di periferica per la pagina e quindi specificare il filtro per ciascun tipo di dispositivo utilizzando un costrutto <DeviceSpecific><Choice>.

Nota:

Nel file di configurazione di Visual Studio predefinito per dispositivi mobili è contenuta un'ampia gamma di filtri di periferica predefiniti. Per impostazione predefinita, in ASP.NET 2.0 i filtri di periferica per dispositivi mobili non vengono generati automaticamente. Se tuttavia si esegue la migrazione dell'applicazione Web da una versione precedente di ASP.NET alla versione 2.0, i filtri di periferica verranno mantenuti nel file Web.config.

Uso della proprietà Filter

Utilizzare la proprietà Filter per valutare i filtri di periferica rispetto alle funzionalità del dispositivo o per impostare filtri specifici.

Il nome del filtro deve corrispondere al nome di un metodo incluso nella pagina o nel file ascx associato oppure al nome di un filtro di periferica valido definito nell'elemento <deviceFilters> del file Web.config. Se il nome di un metodo viene specificato con la proprietà Filter, tale metodo deve corrispondere al prototipo indicato di seguito:

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

Se ad esempio la proprietà Filter è impostata su myChoiceMethod, è necessario che sia presente un metodo con la firma riportata di seguito.

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

Quando valuta l'elemento Choice, ASP.NET controlla se nella pagina o nel controllo utente esiste un metodo della firma appropriata. Se non esiste, viene controllato l'elemento <deviceFilters> del file Web.config.

Uso dei filtri di periferica per estendere la classe MobileCapabilities

Aggiungendo filtri di periferica personalizzati al file Web.config, è possibile estendere la classe MobileCapabilities. La configurazione dei filtri di periferica rappresenta un meccanismo di valutazione per due tipi di filtri, un filtro basato sul confronto e un filtro basato sul delegato di valutazione.

Filtri basati sul confronto

Il filtro basato sul confronto consente di eseguire confronti di base, in genere basati su un argomento booleano. Per questo tipo di filtro è necessario fornire il nome di una funzionalità e il valore con il quale il filtro eseguirà il confronto. In fase di esecuzione, il filtro restituisce un risultato positivo se il valore della funzionalità e il valore fornito sono uguali. Poiché le proprietà booleane confrontate non sono soggette alla distinzione tra maiuscole e minuscole, true e True sono equivalenti. Le altre proprietà vengono confrontate rispettando le maiuscole e le minuscole.

Filtri basati su delegati di valutazione

Per eseguire una valutazione più complessa, è possibile specificare un filtro basato su delegati di valutazione, fornendo la classe e il nome di un metodo. In fase di esecuzione, il metodo fornito viene chiamato per verificare il delegato di valutazione. È necessario scrivere e compilare un metodo personalizzato per eseguire il test del delegato di valutazione. In alternativa, è possibile definire un metodo nella pagina o nel controllo utente e quindi farvi riferimento direttamente dall'attributo filter, come descritto in precedenza.

Sintassi del file Web.config

Se si specificano filtri di periferica nel file Web.config, questi filtri vengono aggiunti alla sezione <system.web>. Per visualizzare la sintassi, vedere <deviceFilters>. La sintassi è valida per entrambi i tipi di filtro. Nell'esempio riportato di seguito il primo filtro mostra il filtro basato sul confronto e il secondo mostra il filtro basato su delegati evaluator:

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

L'oggetto MobileCapabilities valuta questi filtri in fase di esecuzione. Ogni filtro di periferica consente di specificare una condizione di valutazione basata sulle funzionalità del dispositivo. Gli insiemi di dispositivi di destinazione dei filtri di periferica non sono in genere insiemi discreti. Molti dispositivi ad esempio possono corrispondere sia agliattributi di filtro IsColor che agli attributi di filtro IsPDA.

Nota:

I nomi dei filtri di periferica sono soggetti alla distinzione tra maiuscole e minuscole.

Nel costrutto <DeviceSpecific><Choice> vengono specificati i valori per questi filtri. Il codice seguente ad esempio consente di accedere all'attributo di filtro IsColor definito nel file Web.config.

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

Uso del costrutto Device-Specific/Choice

Il costrutto <DeviceSpecific><Choice> rappresenta il costrutto principale per inserire in una pagina tag specifici di un dispositivo. Per aggiungere tag specifici di un dispositivo per un controllo, aggiungere l'elemento <DeviceSpecific> come elemento figlio del controllo. In un controllo può essere contenuto un solo elemento <DeviceSpecific>.

L'elemento <DeviceSpecific> e l'elemento <Choice> consentono di specificare un insieme di valori tra i quali ASP.NET eseguirà una scelta, in base alle caratteristiche del dispositivo richiedente. I valori delle opzioni sono rappresentati da stringhe.

L'elemento <DeviceSpecific> è un contenitore esterno per numerose opzioni, come illustrato nel seguente esempio:

<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>

I filtri quali isColor devono avere voci corrispondenti nel file Web.config oppure devono esistere sotto forma di metodi nella pagina o nel controllo utente, come descritto in precedenza.

Uso dell'elemento Choice

Le opzioni vengono inserite in un elemento <DeviceSpecific> e rappresentano coppie di caratteristica/valore del dispositivo, dove la caratteristica del dispositivo viene estrapolata da varie origini. Le opzioni vengono valutate in base all'ordine di visualizzazione nel costrutto DeviceSpecific/Choice.

Sebbene in un controllo possa essere incluso un solo elemento <DeviceSpecific>, è possibile aggiungere un numero illimitato di elementi <Choice> in un elemento <DeviceSpecific>. In ogni elemento <Choice> può essere contenuto quanto indicato di seguito:

  • Un nome filtro, che specifica il filtro di periferica da valutare. Se il nome filtro viene omesso, l'opzione viene selezionata per impostazione predefinita.

  • Proprietà aggiuntive che eseguono l'override delle proprietà del controllo padre.

  • Definizioni dei modelli per il controllo.

L'elemento <Choice> da utilizzare viene selezionato scorrendo in ordine ogni opzione e valutando il filtro specificato dal nome filtro. Se il filtro corrisponde al dispositivo di destinazione corrente, ovvero se viene restituito il valore true, l'opzione viene selezionata. Il controllo applica quindi qualunque override di proprietà specificato nell'opzione e può utilizzare qualunque modello definito durante l'esecuzione del rendering.

Vedere anche

Altre risorse

Sviluppo di pagine Web ASP.NET per dispositivi mobili