Procedura dettagliata: aggiunta di supporto per i dispositivi

In ASP .NET è disponibile un modello extensibility che consente di aggiungere il supporto per nuovi dispositivi mobili. È possibile aggiungere tale supporto in due modi.

Poiché dispositivi diversi condividono spesso gli stessi browser, lo sviluppatore può implementare il supporto per il dispositivo con un numero estremamente ridotto di operazioni, aggiungendo le informazioni relative al dispositivo nel file Web.config dell'applicazione o nel file Machine.config del server. Il file Machine.config predefinito è memorizzato nel seguente percorso:

systemroot\Microsoft.NET\Framework\numero versione\CONFIG

Il file contiene un elemento <filter> per ogni browser supportato. La sezione che consente di rilevare Microsoft Internet Explorer per il Pocket PC, ad esempio, inizia con "<!-- Pocket IE -->". All'interno della sezione è incluso un elemento <case> che dispone di un attributo match. L'attributo match è impostato sull'agente utente inviato dal dispositivo.

Se il file Machine.config non contiene una corrispondenza appropriata per il dispositivo, è possibile aggiungere il rendering specifico del dispositivo modificando i file di adattatore. Gli adattatori di dispositivo sono disponibili sotto forma di file di origine C# con estensione CS forniti con il prodotto. I file di adattatore di dispositivo possono essere ricompilati in modo da aggiungere ulteriore supporto per i dispositivi.

I file di adattatore determinano il rendering effettivo di un controllo specifico. Per ciascun controllo mobile, è disponibile un adattatore HTML, WML e cHTML corrispondente.

Nota   In alcuni casi, gli adattatori cHTML ereditano dall'adattatore HTML e pertanto non esiste sempre un mapping uno-a-uno tra i controlli. Per ulteriori informazioni, vedere Codice dell'adattatore di dispositivo.

Prima di modificare i file di adattatore, provare in ogni caso ad aggiungere le informazioni nei file di configurazione in quanto risulta di gran lunga più facile inserire voci che creare un nuovo set di adattatori. Se è necessario creare un nuovo set di adattatori, creare le voci nei file Machine.config e Web.config in modo che gli adattatori possano identificare il nuovo dispositivo.

La procedura dettagliata riportata di seguito è progettata per facilitare la creazione di nuovi adattatori.

Utilizzo dell'adattatore WmlMobileTextBox

Ogni controllo mobile è associato tramite mapping a un file di adattatore che fornisce le informazioni necessarie per il rendering del linguaggio dei tag corretto in un dispositivo mobile. Nel controllo TextBox, ad esempio, viene utilizzata la classe WmlTextBoxAdapter per eseguire il rendering del tag corretto in un dispositivo WML. Il file di adattatore contiene un metodo Render che può essere modificato per cambiare il tipo di tag inviato a un client. In genere il metodo Render contiene una chiamata all'adattatore WmlMobileTextWriter, che include i metodi di supporto. In questa procedura dettagliata, il metodo Writer.RenderTextBox del supporto WmlMobileTextWriter consente di creare un tag <input> per l'invio al client.

Nella procedura dettagliata viene illustrato inoltre come utilizzare il metodo GetAttribute per leggere l'attributo personalizzato testAttribute, descritto nel seguente esempio:

<mobile:textbox id="TextBox1" testAttribute="First Name:" runat="server" />)

È possibile impostare questo attributo di test in un controllo al momento della progettazione per generare un tag WML <input> in fase di esecuzione, come illustrato di seguito.

<input  name="TextBox1" testAttribute="FirstName"/>

Per modificare il file di adattatore

  1. Scaricare i file di origine dell'adattatore da http://go.microsoft.com/fwlink/?LinkId=6350http://support.microsoft.com/highlights/mitk.asp.

  2. Aprire la copia del file WmlTextBoxAdapter.cs per modificarla.

  3. Individuare il metodo Render nel file e aggiungere il codice riportato di seguito prima della chiamata al metodo Writer.RenderTextBox.

    [C#]

    String myAttribute = ((IAttributeAccessor)Control).GetAttribute("testAttribute");
    
  4. Aggiungere myAttribute come ultimo argomento della chiamata Writer.RenderTextBox individuata nel metodo Render.

    [C#]

    writer.RenderTextBox(
       Control.ClientID, 
       value,
       format, 
       Control.Title,
       Control.Password, 
       Control.Size, 
       Control.MaxLength, 
       Control.BreakAfter,
       myAttribute
    );
    

Poiché nella procedura precedente viene aggiunto un nuovo argomento che viene passato al metodo RenderTextBox di WmlMobileTextWriter, è necessario modificare la funzione RenderTextBox per accettare e utilizzare tale argomento. Nella procedura riportata di seguito viene illustrato come modificare la funzione per l'argomento aggiuntivo, nonché come identificare il dispositivo al quale è necessario inviare l'attributo del nuovo controllo mediante l'istruzione if.

Per identificare il dispositivo, viene utilizzata la proprietà MobileDeviceModel della classe MobileCapabilities. Il valore MobileDeviceModel viene creato nel file Machine.config file quando un dispositivo esegue una richiesta. Se la richiesta è stata eseguita dal dispositivo corretto, viene chiamato il metodo WriteAttribute della classe WmlMobileTextWriter per creare il nuovo tag.

Per modificare il file WmlMobileTextWriter.cs

  1. Aprire il file WmlMobileTextWriter.cs.

  2. Aggiungere l'argomento di stringa myAttribute al metodo RenderTextBox, come indicato nel seguente esempio:

    [C#]

    public virtual void RenderTextBox(
       String id, 
       String value,
       String format,
       String title,
       bool password, 
       int size, 
       int maxLength, 
       bool breakAfter,
       String myAttribute
    )
    
  3. Aggiungere il codice riportato di seguito al metodo RenderTextBox prima del codice WriteLine(" />");.

    [C#]

    string type = Device.MobileDeviceModel;   
    if(type == "Generic Simulator")
    {
       if(myAttribute!=null && myAttribute.Length > 0)
       {
          WriteAttribute("testAttribute", myAttribute);
       }
    }
    

In alcuni casi, gli altri adattatori dipendono dall'adattatore modificato. La classe UPWmlMobileTextWriter, ad esempio, è progettata in modo specifico per Openwave UP.Browser ed eredita dalla classe WmlMobileTextWriter. Pertanto lo sviluppatore deve modificare anche il metodo RenderTextBox nella classe ereditata utilizzando la procedura riportata di seguito.

Per modificare il file UPWmlMobileTextWriter.cs

  1. Aprire il file UPWmlMobileTextWriter.cs.

  2. Aggiungere un argomento di stringa chiamato myAttribute al metodo RenderTextBox, come indicato nel seguente esempio:

    [C#]

    public override void RenderTextBox(
       String id, 
       String value,
       String format, 
       String title,
       bool password, 
       int size, 
       int maxLength, 
       bool breakAfter,
       String myAttribute
    )
    
  3. Modificare la chiamata a base.RenderTextBox individuata nel metodo RenderTextBox per passare l'argomento myAttribute.

    [C#]

    base.RenderTextBox(id, value, format, title, password, size, maxLength, false, myAttribute);
    

Dopo aver modificato i file di adattatore, creare un nuovo assembly che possa essere utilizzato nelle applicazioni Web mobili.

Per creare un nuovo assembly

  1. Aprire il prompt dei comandi di Microsoft Visual Studio .NET facendo clic sul pulsante Start. Scegliere il menu Programmi, quindi il menu Microsoft Visual Studio .NET, il menu Strumenti di Visual Studio .NET e infine fare clic su Prompt dei comandi di Visual Studio .NET.

  2. Nella finestra Prompt dei comandi di Visual Studio .NET immettere il comando riportato di seguito, con il percorso dei file del nuovo adattatore creato nella prima procedura dettagliata.

    cd hdd:\new adapter folder location
    
  3. Immettere il comando riportato di seguito per compilare e creare una nuova DLL per l'adattatore.

    Csc /target:library
    /out:System.Web.UI.MobileControls.ShippedAdapterSource.dll
    /r:System.Web.Mobile.dll
    /debug+
    /D:COMPILING_FOR_SHIPPED_SOURCE
    /nowarn:0679
    *.cs
    

Dopo aver creato un nuovo assembly per l'adattatore, è necessario creare il relativo riferimento nell'applicazione Web. Occorre aggiornare anche il file Web.config per eseguire l'override delle impostazioni del file Machine.config in modo che venga utilizzato il nuovo assembly. Se si utilizzano attributi personalizzati, è necessario impostare la proprietà AllowCustomAttributes nel file Web.config.

Per configurare l'applicazione Web

  1. In Visual Studio .NET, fare clic con il pulsante destro del mouse sul nome del progetto in Esplora soluzioni e scegliere Aggiungi riferimento.

  2. Scegliere il pulsante Sfoglia, passare al nuovo assembly dell'adattatore e quindi fare clic su Apri. Scegliere OK.

  3. Aggiungere il supporto per il nuovo assembly dell'adattatore copiando il codice del file Web.config-shippedAdapaters scaricato nel file Web.config del progetto.

    Nota   Omettere i tag <system.web> di apertura e di chiusura in quanto sono già inclusi nel file Web.config generato in Visual Studio .NET.

  4. Nel file Web.config, aggiungere il supporto per gli attributi personalizzati impostando la proprietà AllowCustomAttributes del tag <mobileControls> esistente su true, come indicato nel seguente esempio:

    <mobileControls allowCustomAttributes="true">
    </mobileControls>
    
  5. Ricompilare il progetto Visual Studio .NET.

Vedere anche

Aggiunta di nuovi adattatori di dispositivo e supporto per dispositivi