Condividi tramite


Script client nelle pagine Web ASP.NET

Aggiornamento: novembre 2007

Le applicazioni Web ASP.NET non sono limitate a strumenti e linguaggi basati su server. È possibile includere ECMAScript (JavaScript o JScript) nelle pagine Web ASP.NET per creare funzionalità avanzate basate sul browser. In ASP.NET è disponibile un'ampia gamma di funzionalità per il supporto degli script client.

Un'opzione è costituita dalla possibilità di creare e aggiungere singoli frammenti di script client alle pagine Web ASP.NET per supportare il comportamento del browser progettato per l'applicazione. Questa opzione si dimostra utile se si intende includere solo pochi frammenti di codice JavaScript o se si sta utilizzando codice JavaScript già esistente. Questa opzione consente inoltre di ridurre al minimo la dimensione delle pagine Web ASP.NET.

In alternativa, è possibile sfruttare le potenti funzionalità AJAX di ASP.NET. Queste funzionalità AJAX includono un framework completo che supporta gli elementi seguenti:

  • Programmazione orientata agli oggetti in JavaScript.

  • Postback asincroni.

  • Servizi Web dell'applicazione per l'autenticazione e i profili.

  • Controlli server che gestiscono lo script client con debug e supporto dell'analisi estesi.

L'utilizzo delle funzionalità ASP.NET AJAX consente di sfruttare le funzionalità JavaScript con una minore quantità di attività di codifica manuale. Fornisce le funzionalità JavaScript estese e un framework per la creazione di funzionalità client integrate in ASP.NET.

In questo argomento vengono forniti cenni preliminari sulle opzioni per l'aggiunta di script client alle pagine Web ASP.NET. Include le sezioni seguenti:

  • Scenari

  • Inclusione dello script client personalizzato nelle pagine ASP.NET

  • Estensione di JavaScript con le funzionalità ASP.NET AJAX

  • Controlli server ASP.NET dipendenti dallo script client

  • Aggiunta di eventi di script client a controlli server ASP.NET

  • Riferimenti a controlli server nello script client

  • Generazione di eventi Click client per controlli server

  • Comunicazione tra script client e codice lato server

  • Creazione di componenti dello script client

  • Aggiunta delle funzionalità client ai controlli server

Scenari

Lo script client viene utilizzato per eseguire le attività riportate di seguito:

  • Migliorare l'esperienza utente con pagine Web che sono più dettagliate, che rispondono di più alle azioni dell'utente e che si comportano come applicazioni client tradizionali. Ad esempio, è possibile utilizzare lo script client per controllare le immissioni da tastiera in una casella di testo mentre ciascun carattere viene digitato.

  • Aggiungere alle pagine Web ASP.NET le funzionalità AJAX che consentono di eseguire le operazioni seguenti:

    • Ridurre gli aggiornamenti dell'intera pagina ed evitare lo sfarfallio della pagina modificando dinamicamente gli elementi DOM della pagina.

    • Aggiornare e gestire l'interfaccia utente senza richiedere un postback al server.

    • Organizzare il codice in componenti client. I componenti client sono oggetti riutilizzabili che incapsulano JavaScript basato su Microsoft AJAX Library. I componenti client possono essere gestiti anche mediante controlli lato server personalizzati o possono essere associati a controlli server esistenti per aggiungere la funzionalità client.

Inclusione dello script client personalizzato nelle pagine ASP.NET

Le pagine Web ASP.NET non sono altro che pagine con codice HTML ed è quindi possibile inserirvi script client personalizzati. Gli script client sono supportati dalle pagine ASP.NET nella misura in cui vengono supportati dal browser che richiede la pagina. Se la pagina viene eseguita nel browser di un telefono cellulare o di altri dispositivi, la misura in cui gli script client sono supportati varia a seconda del browser.

Esistono varie opzioni per includere lo script client nelle pagine ASP.NET:

  • È possibile includere staticamente lo script client in un blocco script che include codice o che utilizza un attributo include per fare riferimento a un file JavaScript (estensione js). Utilizzare questa opzione per inserire blocchi di script o file JavaScript contenenti script client che non è necessario creare dinamicamente e che non richiedono funzionalità AJAX aggiuntive fornite da Microsoft AJAX Library.

  • È possibile creare e aggiungere dinamicamente script client a una pagina Web ASP.NET utilizzando la classe ClientScriptManager. Utilizzare questa opzione quando si desidera creare script che dipendono da informazioni disponibili solo in fase di esecuzione.

  • Se si intende sfruttare le funzionalità AJAX di ASP.NET, è possibile gestire i file script client utilizzando il controllo server ScriptManager. Il controllo server ScriptManager assicura inoltre che Microsoft AJAX Library venga caricato nel browser prima dell'esecuzione degli script. Per ulteriori informazioni, vedere Cenni preliminari su ASP.NET AJAX.

Inclusione di blocchi di script client statici

È possibile aggiungere blocchi script a una pagina ASP.NET come per una qualsiasi pagina HTML. È inoltre possibile utilizzare script client per scrivere gestori per eventi del lato client come, ad esempio, l'evento onload della pagina. Quando una pagina ASP.NET è in esecuzione nel browser, gli elementi di codice della pagina sono indirizzabili nello script client. Tali elementi generano tutti gli eventi client che genererebbero in una pagina HTML.

Nota:

È possibile fare riferimento ai controlli server ASP.NET nello script client. Per ulteriori informazioni, vedere Riferimenti a controlli server nello script client più avanti in questo argomento.

Una pagina Web ASP.NET può inoltre accedere a un file di script facendovi riferimento nell'attributo src del tag <script>, come illustrato nell'esempio seguente:

<script type="text/javascript" src="MyScript.js"></script>

Tenere gli script client in file js esterni anziché nelle pagine stesse consente di organizzare gli script client. Può inoltre renderne più facile la gestione per il controllo della versione e più semplice la condivisione tra pagine.

I file js esterni sono memorizzati nella cache dal browser, analogamente alla modalità in cui le pagine Web e le immagini vengono memorizzate nella cache. Dopo essere stato caricato dal browser come un file esterno, lo script è disponibile nella cache per qualsiasi altra pagina Web che lo richieda. Ciò consente di migliorare le prestazioni dell'applicazione Web.

Creazione dinamica di script client

In molti casi è possibile creare lo script client della pagina in modo dichiarativo, di solito come blocco di script. Tuttavia, potrebbe essere necessario creare script client in modo dinamico. Questa tecnica è utile se lo script dipende da informazioni disponibili solo in fase di esecuzione. Ad esempio, è possibile inserire uno script client in una pagina che fa riferimento a un controllo server il cui nome (ID) non è noto fino al momento in cui viene eseguita l'applicazione, oppure è possibile creare uno script che dipenda da valori ottenuti da un utente.

È possibile creare e inserire dinamicamente uno script client in una pagina di cui è stato eseguito il rendering chiamando i metodi della classe ClientScriptManager, ad esempio:

  • RegisterClientScriptBlock, che inserisce un blocco di script all'inizio della pagina di cui è stato eseguito il rendering.

  • RegisterStartupScript, che inserisce un blocco di script alla fine della pagina di cui è stato eseguito il rendering.

Nell'esempio riportato di seguito viene mostrato come aggiungere alla pagina un script client generato dinamicamente. Il codice controlla se la casella di controllo denominata checkDisplayCount è selezionata. In caso affermativo, il codice esegue le attività seguenti:

  • Crea una funzione script client che utilizza un elemento span per visualizzare il conteggio dei caratteri in un controllo TextBox denominato TextBox1.

  • Aggiunge un evento client al controllo TextBox.

  • Genera l'elemento span.

Il codice presuppone che la pagina contenga una casella di controllo denominata checkDisplayCount la cui proprietà AutoPostBack sia impostata su true e un controllo PlaceHolder denominato PlaceHolder1.

Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs)
    If checkDisplayCount.Checked Then
        Dim scriptText As String = ""
        scriptText &= "function DisplayCharCount(){"
        scriptText &= "   getElementByID("spanCounter").innerText = " & _
            "document.forms[0].TextBox1.value.length"
        scriptText &= "}"
        ClientScriptManager.RegisterClientScriptBlock(Me.GetType(), _
            "CounterScript", scriptText, True)
        TextBox1.Attributes.Add("onkeyup", "DisplayCharCount()")
        Dim spanLiteral As New LiteralControl()
        spanLiteral.Text = "<span id=""spanCounter""></span>"
        PlaceHolder1.Controls.Add(spanLiteral)
    End If
End Sub

void Page_Load(object sender, EventArgs e)
{
    if(checkDisplayCount.Checked)
    {
        String scriptText = "";
        scriptText += "function DisplayCharCount(){";
        scriptText += "   spanCounter.innerText = " + 
            " document.forms[0].TextBox1.value.length";
        scriptText += "}";
        ClientScriptManager.RegisterClientScriptBlock(this.GetType(), 
           "CounterScript", scriptText, true);
        TextBox1.Attributes.Add("onkeyup", "DisplayCharCount()");
        LiteralControl spanLiteral = new 
            LiteralControl("<span id=\"spanCounter\"></span>");
        PlaceHolder1.Controls.Add(spanLiteral);
    }
}

Per ulteriori informazioni, vedere Procedura: aggiungere dinamicamente script client alle pagine Web ASP.NET.

Per i metodi della classe ClientScriptManager è necessario fornire un tipo a cui il blocco di script è associato e assegnargli una chiave. Specificando il tipo è possibile evitare conflitti nel caso in cui sia la pagina sia i controlli (controlli personalizzati o controlli utente) aggiungano blocchi di script nella stessa pagina. L'utilizzo di una chiave consente di evitare la duplicazione. Se si chiama uno dei metodi per aggiungere uno script e ne esiste già uno con la stessa chiave e lo stesso tipo, non ne viene aggiunto uno nuovo.

Il tipo e la chiave forniti consentono di evitare una duplicazione non necessaria. Pertanto, in genere non occorre determinare in modo esplicito se un blocco di script esiste già. Tuttavia, se nell'applicazione è utile controllare se un blocco di script esiste già, è possibile chiamare i seguenti metodi:

Aggiunta dello script client mediante il controllo ScriptManager

Se si stanno utilizzando le funzionalità ASP.NET AJAX, il controllo ScriptManager consente di aggiungere i file di script in una pagina. Sono inclusi i file di script statici (file con estensione js) sul disco e i file di script incorporati come risorse in un assembly. È possibile specificare i file di script in modo dichiarativo nel controllo. In alternativa, è possibile utilizzare i metodi di registrazione del controllo ScriptManager che consentono di gestire a livello di codice i file di script client esistenti e di utilizzare gli script per il supporto dell'aggiornamento parziale della pagina.

Per i cenni preliminari sul controllo ScriptManager, vedere Cenni preliminari sul controllo ScriptManager. Per informazioni su come incorporare un file JavaScript come risorsa in un assembly e su come utilizzarlo in una pagina Web, vedere Procedura dettagliata: incorporamento di un file JavaScript come risorsa in un assembly.

Nota:

Se si stanno utilizzando funzionalità AJAX client di ASP.NET ma non funzionalità basate su server, utilizzare i metodi della classe ClientScriptManager per inserire gli script in una pagina Web ASP.NET. Se ad esempio non si stanno utilizzando il controllo UpdatePanel o le funzionalità di localizzazione per gli script, non è necessario il controllo ScriptManager. Pertanto, non è possibile chiamarne i metodi per inserire lo script client nella pagina. L'utilizzo della classe ClientScriptManager è di solito più efficiente dell'utilizzo dei metodi del controllo ScriptManager, perché i metodi della classe ClientScriptManager non richiedono elaborazione aggiuntiva per le funzionalità basate su server supportate dal controllo ScriptManager. Se è necessario creare lo script dinamicamente anziché gestire semplicemente lo script esistente, utilizzare la classe ClientScriptManager per inserire lo script client in una pagina. Ad esempio, utilizzare la classe ClientScriptManager se si desidera creare a livello di codice uno script client basato su informazioni a cui un file di script preesistente non può fare riferimento.

Estensione di JavaScript con le funzionalità ASP.NET AJAX

ASP.NET supporta le funzionalità AJAX, che consentono di utilizzare gli script client per aggiungere funzionalità avanzate a una pagina Web ASP.NET. Sono inclusi i postback asincroni, un'interfaccia utente molto più efficiente e altro ancora. Le funzionalità AJAX vengono implementate mediante Microsoft AJAX Library, che è costituito da librerie script client che incorporano le tecnologie ECMAScript (JavaScript) e DHTML (Dynamic HTML) comuni a più browser. Le funzionalità AJAX sono integrate con la piattaforma di sviluppo basata su server ASP.NET.

È possibile utilizzare il sistema di tipi, le funzionalità orientate agli oggetti e le estensioni per gli oggetti JavaScript di Microsoft AJAX Library per fornire le funzionalità seguenti per la creazione di script client personalizzati:

  • Spazi dei nomi

  • Ereditarietà

  • Interfacce

  • Enumerazioni

  • Reflection

  • Supporti di debug

  • Analisi

  • Gestione delle eccezioni tipizzate

  • Metodi di supporto per stringhe e matrici.

    Nota:

    È possibile utilizzare Microsoft AJAX Library anche se non si intende utilizzare le funzionalità AJAX basate su server di ASP.NET.

Per ulteriori informazioni su come Microsoft AJAX Library estende JavaScript, vedere i seguenti argomenti:

Compatibilità dei browser con le funzionalità AJAX

Il livello di compatibilità dei browser incluso in Microsoft AJAX Library fornisce la compatibilità degli script AJAX con i browser più diffusi, inclusi Microsoft Internet Explorer, Mozilla Firefox e Apple Safari. In questo modo è possibile scrivere lo stesso script indipendentemente dal browser di destinazione. Per ulteriori informazioni, vedere Cenni preliminari su ASP.NET AJAX.

Controlli server ASP.NET dipendenti dallo script client

Il funzionamento di alcuni controlli server ASP.NET richiede l'utilizzo di script client. Ad esempio, il controllo LinkButton prevede che lo script client supporti il comportamento di postback. Lo script client necessario per i controlli server Web ASP.NET viene aggiunto automaticamente alla pagina in occasione del rendering della stessa. Lo script client generato per questi controlli è indipendente dagli script client personalizzati.

Per ulteriori informazioni, vedere Controlli server Web ASP.NET che utilizzano script client.

Aggiunta di eventi di script client a controlli server ASP.NET

I controlli ASP.NET eseguono il rendering come elementi della pagina. Gli elementi esatti di cui viene eseguito il rendering da parte di un controllo dipendono dal linguaggio di markup della pagina che potrebbe includere HTML, XHTML o un altro linguaggio. È quindi possibile aggiungere la gestione degli eventi di script client ai controlli come per qualsiasi altro elemento della pagina. In alcuni casi è tuttavia necessario conoscere il modo in cui il controllo esegue il rendering dell'output e quali attributi riserva per se stesso.

Per ulteriori informazioni, vedere Procedura: aggiungere eventi di script client ai controlli server Web ASP.NET.

Aggiunta di gestori eventi lato client in modo dichiarativo

Nel codice dei controlli server ASP.NET è possibile impostare i valori delle proprietà utilizzando gli attributi. Ad esempio, per impostare la proprietà Text di un controllo TextBox, è possibile creare codice come quello riportato di seguito:

<asp:textbox id="TextBox1"  text="Sample Text" />
Nota sulla sicurezza:

Un oggetto TextBox accetta l'input dell'utente, che rappresenta una potenziale minaccia alla sicurezza. Per impostazione predefinita, le pagine Web ASP.NET verificano che l'input dell'utente non includa script o elementi HTML. Per ulteriori informazioni, vedere Cenni preliminari sugli attacchi tramite script.

Se si include un attributo che non esegue il mapping a una proprietà del controllo, ASP.NET lo ignora durante l'elaborazione del server. Lo passa al browser così com'è nell'ambito del codice generato dal controllo. Ad esempio, al controllo TextBox non è associata alcuna proprietà denominata onkeyup. Pertanto, se si include un attributo onkeyup nel codice di un controllo TextBox, tale attributo viene passato al browser. Tale comportamento consente di aggiungere associazioni eventi ai controlli server dichiarandoli nel codice. Ad esempio, se si utilizza il seguente codice per un controllo TextBox la casella di testo visualizzerà la lunghezza del testo in un elemento span denominato spanCounter ogni volta che l'utente preme un tasto nella casella di testo:

<asp:textbox id="TextBox1"  text="Sample Text" 
  onkeyup="spanCounter.innerText=this.value.length;" />

In alternativa, l'evento potrebbe chiamare un metodo definito in uno script client in un altro punto della pagina:

<asp:textbox id="TextBox1"  text="Sample Text" 
  onkeyup="DisplayCount(this);" />

Il linguaggio utilizzato per il codice lato server (Visual Basic o C#) non influisce sullo script client, che è sempre scritto in ECMAScript (JavaScript o JScript).

Per ulteriori informazioni, vedere Procedura: aggiungere eventi di script client ai controlli server Web ASP.NET.

Aggiunta di attributi nel codice lato server

Gli attributi possono essere aggiunti ai controlli, oltre che in modo dichiarativo, anche a livello di codice utilizzando il codice lato server. Questa tecnica è utile se il valore dell'attributo da aggiungere è noto solo in fase di esecuzione. Per informazioni dettagliate, vedere Procedura: impostare gli attributi HTML dei controlli nelle pagine Web ASP.NET.

Riferimenti a controlli server nello script client

Quando viene eseguito il rendering di un controllo server ASP.NET, il rendering della proprietà ClientID del controllo viene eseguito nella pagina sia come attributo id sia come attributo name dell'elemento risultante. La proprietà ClientID viene automaticamente generata dalla proprietà ID impostata. Ad esempio, è possibile creare il seguente controllo server ASP.NET:

<asp:textbox id="TextBox1"  text="Sample Text" />

La proprietà ClientID viene impostata su TextBox1 e l'elemento risultante in un browser HTML è simile a quello riportato di seguito:

<input name="TextBox1" type="text" value="Sample Text" id="TextBox1" />
Nota:

L'elemento form esegue soltanto il rendering dell'attributo ID e non dell'attributo name.

È possibile pertanto creare un riferimento al controllo server nello script client utilizzando questi attributi. Per fare riferimento al controllo di solito si utilizza un riferimento completo nello script client. Se il controllo è figlio dell'elemento form della pagina, di solito è possibile fare riferimento al controllo nello script client utilizzando la sintassi riportata nel seguente esempio:

var tb1 = document.getElementById("TextBox1");
tb1.value = "New value";

Nell'esempio seguente si presuppone che l'attributo id dell'elemento form della pagina sia stato impostato su form1.

document.form1.TextBox1.value = "New value";

La sintassi esatta necessaria per fare riferimento a un controllo server dipende dal controllo che si sta utilizzando e dal fatto che sia o meno figlio di un altro controllo. Se non si è certi di come fare riferimento a un controllo, può essere utile eseguire la pagina, visualizzare il codice sorgente e verificare il modo in cui è stato eseguito il rendering del controllo.

Riferimenti a controlli il cui rendering viene eseguito all'interno di altri controlli

Alcuni controlli eseguono il rendering di controlli figlio nella pagina, tra cui i controlli elenco dati quali i controlli ListView, GridView, DetailsView, FormView, DataList e Repeater, i controlli utente e i controlli Web part.

In questi casi, i controlli figlio potrebbero non avere ID univoci in quanto tali controlli vengono definiti in un modello che genera nuove istanze di controllo per ogni riga di dati (controlli elenco dati) o perché il controllo padre può essere aggiunto alla pagina da un'origine esterna (controlli utente e controlli Web part). I controlli padre di questo tipo sono quindi contenitori di denominazione (implementano INamingContainer). Un contenitore di denominazione garantisce che i controlli figlio abbiano un ID univoco nella pagina.

Ad esempio, è possibile creare una proprietà ItemTemplate nel controllo DataList. Nel modello, è possibile aggiungere un controllo CheckBox con ID da impostare su checkEnabled. Quando viene eseguito il rendering del controllo DataList, per ogni elemento di dati viene effettuato il rendering di un nuovo controllo checkEnabled. La pagina di cui viene eseguito il rendering non deve contenere più istanze di un elemento denominato checkEnabled. Pertanto, il controllo DataList crea un'identità univoca per ognuno dei controlli figlio.

Le identità univoche dei controlli figlio di un contenitore di denominazione vengono generate effettuando il rendering di due proprietà. Per ogni controllo figlio:

  • Il rendering della proprietà UniqueID del controllo viene eseguito attraverso l'attributo name.

  • Il rendering della proprietà ClientID del controllo viene eseguito attraverso l'attributo id.

Entrambe le proprietà ClientID e UniqueID sono basate sulla proprietà ID originale, modificata con le informazioni necessarie per garantire l'univocità del risultato nella pagina. Nello script client è possibile fare riferimento al valore di ClientID, ovvero dell'attributo id nell'elemento di cui viene eseguito il rendering.

Aprendo nel browser una pagina con un contenitore di denominazione è possibile visualizzarne il codice sorgente per controllare gli ID univoci generati come attributi name e id per i controlli figlio del contenitore di denominazione. Si consiglia tuttavia di non fare riferimento agli ID così come vengono visualizzati nel browser. La formula usata per generare ID univoci per i controlli figlio può variare; pertanto, si consiglia di ottenere il valore della proprietà ClientID del controllo figlio nel codice lato server e utilizzarlo per fare riferimento al controllo figlio. Ad esempio, in una pagina è possibile creare uno script client in modo dinamico. Se lo script client fa riferimento a un controllo figlio, ottenere la proprietà ClientID del controllo figlio e incorporarla nello script dinamico.

Generazione di eventi Click client per controlli server

Come accennato in precedenza, è possibile aggiungere un evento Click client alla maggior parte dei controlli server ASP.NET aggiungendo l'attributo onclick al codice del controllo. Tuttavia, alcuni controlli riservano l'attributo onclick per definire l'associazione all'evento server, tra cui i controlli Button, LinkButton e ImageButton. Con questi controlli non è possibile utilizzare l'attributo onclick in modo dichiarativo per aggiungere un gestore script client al controllo.

È possibile aggiungere un gestore script client per l'evento Click in due modi:

  • Impostando la proprietà OnClientClick del controllo sullo script da eseguire. Quando il controllo pulsante esegue il rendering, il valore OnClientClick viene convertito in un attributo onclick.

  • Aggiungendo un attributo onclick a livello di codice mediante una chiamata al metodo Add dell'insieme Attributes del controllo.

    Nota:

    Non è possibile aggiungere un attributo onclick a livello di codice a un controllo server se tale controllo già utilizza onclick nell'ambito delle proprie funzionalità di base, ad esempio LinkButton.

Nel seguente esempio di codice viene illustrato un controllo Button che genera eventi Click sia lato client sia lato server:

<asp:button id="Button1" 
   
  OnClientClick="return confirm('Ok to post?')" 
  onclick="Button1_Click" 
  Text="Click!" />

Comunicazione tra script client e codice lato server

Oltre a utilizzare i postback standard, le pagine Web ASP.NET possono comunicare tra script client e codice lato server in diversi modi. Le funzionalità AJAX in ASP.NET, ad esempio il controllo server UpdatePanel, consentono di automatizzare aggiornamenti asincroni di pagina parziale. Inoltre, ASP.NET AJAX supporta la chiamata asincrona dei servizi Web.

Se non si utilizzano le funzionalità AJAX di ASP.NET, è possibile richiamare direttamente un callback client personalizzato e condividere le informazioni tra il browser e il server tramite una varietà di metodi. Nella sezione seguente vengono fornite informazioni sulle opzioni disponibili.

Chiamata del codice lato server direttamente dallo script client

Lo script client può chiamare il codice lato server direttamente implementando un callback client. Nella normale sequenza delle pagine Web ASP.NET, ogni azione dell'utente che esegue codice lato server richiede un postback. È tuttavia possibile richiamare l'elaborazione server anche dal browser senza un postback completo. In questo scenario, il browser non invia la pagina intera al server e non la ricarica quindi quando il server risponde. Invece, il browser invia una piccola quantità di dati al server. Quando il server invia una risposta, lo script client nel browser elabora i dati restituiti senza ricaricare la pagina. Durante l'elaborazione server, ogni stato client, ad esempio le variabili locali, viene mantenuto. Questo processo è noto come postback asincrono ed è essenziale per il rendering di pagina parziale.

È possibile chiamare i metodi server dallo script client senza un postback in queste modalità:

  • Utilizzare il controllo server di ASP.NET UpdatePanel. Questo controllo fa parte delle funzionalità AJAX di ASP.NET. Consente di definire un'area di una pagina che verrà aggiornata con un aggiornamento a pagina parziale. Quando si utilizza il controllo UpdatePanel, non è necessario scrivere uno script client per richiamare gli aggiornamenti asincroni di pagina parziali. Per ulteriori informazioni, vedere Cenni preliminari sul rendering a pagina parziale e Cenni preliminari sui controlli UpdatePanel.

  • Utilizzare il supporto ASP.NET AJAX affinché la comunicazione del servizio Web scriva uno script client che richiami un metodo del server Web. Questo approccio è concettualmente simile alla scrittura di callback di script client per chiamare un metodo del server Web. Tuttavia, Microsoft AJAX Library gestisce i dettagli della chiamata del metodo server e fornisce una libreria script client più affidabile per effettuare ed elaborare la chiamata. Per ulteriori informazioni, vedere Servizi Web in ASP.NET AJAX.

  • Implementare un callback client. In questo scenario, si scrive il codice lato client che invia la richiesta ed elabora il risultato. L'approccio più comune consiste nel creare una funzione chiamante nello script client e una funzione di callback che viene richiamata quando il server restituisce i risultati. Per ulteriori informazioni, vedere Implementazione di callback client a livello di codice senza postback nelle pagine Web ASP.NET.

Ogni approccio presenta dei vantaggi. La creazione di un proprio callback client spesso consente di conseguire l'overhead più basso e la dimensione di pagina più piccola. L'utilizzo del controllo server UpdatePanel consente di implementare gli aggiornamenti di pagina parziali senza scrivere alcuno script client. Anche l'utilizzo di AJAX per chiamare i servizi Web elimina la maggior parte dello script client da scrivere per effettuare le chiamate asincrone del servizio Web.

Condivisione di dati mediante un controllo HiddenField

È possibile condividere informazioni tra script client e codice lato server aggiungendo un controllo HiddenField alla pagina. È possibile fare riferimento al campo nascosto nello script client mediante il relativo ID. È inoltre possibile fare riferimento al campo nascosto nel codice server. Ciò consente di archiviare i valori in uno dei blocchi di codice e leggerli nell'altro. Per passare le informazioni dal codice lato server allo script client, è possibile creare un campo nascosto a livello di codice utilizzando il metodo RegisterHiddenField. Questo metodo consente di specificare un ID e un valore per il campo. È possibile utilizzare il campo per archiviare i valori dinamici nella pagina in modo tale che lo script client possa leggerli.

È possibile condividere i valori tra il codice lato server e il codice lato client anche utilizzando i cookie. Per informazioni su come scrivere e leggere i cookie nel codice lato server, vedere Procedura: scrivere un cookie e Procedura: leggere un cookie. Per i dettagli sull'utilizzo di JavaScript per leggere e scrivere i cookie, vedere JavaScript e cookie sul sito Web MSDN (informazioni in lingua inglese).

Condivisione di dati durante i postback asincroni

Se si stanno utilizzando le funzionalità AJAX di ASP.NET, è possibile inviare dati personalizzati come stringa dal server al client durante i postback asincroni (rendering di pagina parziale) utilizzando il metodo RegisterDataItem. Il metodo RegisterDataItem consente di utilizzare il codice lato server per registrare un campo collegato a un controllo. È possibile accedere al valore del campo nello script client nel browser tramite gli oggetti ASP.NET AJAX Sys.WebForms.PageLoadingEventArgs, Sys.WebForms.PageLoadedEventArgse Sys.WebForms.PageLoadedEventArgs. Il metodo RegisterDataItem può essere chiamato solo durante un postback asincrono.

Per informazioni sull'utilizzo del metodo RegisterDataItem per condividere i dati tra il server e il client, vedere gli argomenti seguenti:

Creazione di componenti dello script client

I componenti client sono oggetti riutilizzabili che incapsulano JavaScript basato su Microsoft AJAX Library. La libreria fornisce le seguenti classi°di base dei tipi di oggetto client: Component (che rappresenta una classe di base per i componenti non visivi), Control e Behavior. Da queste classi è possibile derivare per fornire funzionalità client avanzate, tra cui:

  • Accesso al ciclo di vita di un componente dall'inizializzazione all'eliminazione. Sono inclusi gli eventi generati quando i valori delle proprietà cambiano.

  • Rappresentazione di un elemento DOM come oggetto client con nuove funzionalità. Estende il comportamento degli elementi DOM. Ad esempio, è possibile aggiungere il comportamento filigrana da associare a una casella di testo esistente.

Per ulteriori informazioni, vedere i seguenti argomenti:

Aggiunta delle funzionalità client ai controlli server

I controlli server ASP.NET esistenti o personalizzati possono essere trasformati in controlli Extender ASP.NET AJAX. Un controllo Extender è un controllo server Web che utilizza le funzionalità ECMAScript (JavaScript), DHTML e AJAX del browser per aggiungere funzionalità quali l'interattività e la comunicazione asincrona con il server.

Per ulteriori informazioni, vedere i seguenti argomenti:

Vedere anche

Concetti

Controlli server Web ASP.NET e funzionalità del browser

Modello di eventi dei controlli server Web ASP.NET