How to fix Error AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts

Giorgio Borelli

Finestra d'errore AjaxControlToolkit requires ASP.NET Ajax 4.0 scriptsNell'articolo precedente "Come aggiungere gli Ajax Control ToolKit in Visual Studio" abbiamo visto come integrare i control extender AJAX in Visual Studio e referenziare correttamente le librerie AJAX.

Il framework ASP.NET Ajax è composto da due parti, il lato client e quello server. Il framework client rilasciato con la libreria AJAX è interamente scritto in Javascript e rappresenta decisamente la parte più corposa di ASP.NET Ajax con tanti controlli che estendono le funzionalità; ciò nonostante la comunicazione asincrona con renderizzazione parziale e senza postback della pagina, non sarebbe possibile senza il componente server, per quest'ultimo è il controllo ScriptManager responsabile della renderizzazioni e della presentazione delle funzioni javascript implementate col lato client.

Pertanto, per poter usufruire dei controlli AJAX nelle nostre pagine è necessario che sia presente nella stessa il controllo lato server ScriptManager. AJAX ed i suoi controlli client e server sono stati introdotti dalla versione 2.0 del .net framework in poi, nel frattempo la libreria AJAX è andata evolvendosi ampliando le sue funzionalità ed i controlli presenti nella libreria e nei Control ToolKit, di fatto alcuni nuovi controlli o quelli rivisti non sono più in grado di comunicare con la parte server gestita tramite lo ScriptManager, poichè quest'ultimo è in grado di gestire le richieste riferendosi a versioni più vecchie della Microsoft Library AJAX.

Ecco perchè nel caso in cui noi abbiamo referenziato l'ultima versione della libreria AJAX nella nostra applicazione web, e cerchiamo di gestirla tramite lo ScriptManager, è possibile che in fase di caricamento della pagina venga fuori l'errore: "AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts".

Ma così come vengono rilasciate nuove versioni della libreria AJAX client, lo stesso accade per quella server, in modo da permettere una corretta interazione delle chiamate asincrone. Quindi per correggere l'errore "AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts" basta usare la nuova versione del controllo server ScriptManager.

Al momento in cui scrivo l' ASP.NET Ajax Library, scaricabile dal sito CodePlex cliccando qui, è giunta alla versione 0911 Beta, se integriamo in Visual Studio questa versione di AJAX e cerchiamo di gestire i controlli lato client inserendo un controllo ScriptManager nella nostra pagina, questo per alcuni nuovi controlli (come il SeaDragon) o per quelli che si sono evoluti, non sarà in grado di svolgere il suo compito, poichè fà riferimento ad una versione di AJAX più vecchia, generando in fase di renderizzazione della pagina l'errore di script "AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts". Per ovviare a quest'errore, non dobbiamo far altro che usare il nuovo ScriptManager che prende il nome di AjaxScriptManager.

Per far uso del controllo server AjaxScriptManager, come visto nell'articolo "Inserire gli Ajax Control ToolKit in Visual Studio e referenziare le librerie AJAX", non dobbiamo far altro che scaricare la nuova libreria, posizionarci nella ToolBox di Visual Studio (nella Tab adatta o in quella General) e col tasto destro del mouse scegliere "Choose Items...", una volta apertasi la finestra modale sfogliamo col tasto "Browse" il nostro file system alla ricerca della dll lato server della libreria AJAX appena scaricata, System.Web.Ajax.dll, che si trova in

...vostro path/AspNetAjaxLibraryBeta0911\WebForms\Release   (per la versione release)

...vostro path/AspNetAjaxLibraryBeta0911\WebForms\Debug   (per la versione debug)

Questo passaggio farà comparire nella ToolBox il controllo AjaxScriptManager, e basterà far uso di questo all'interno delle nostre pagine aspx, anzichè il classico controllo ScriptManager, per risolvere l'errore "AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts".

Ma le novità non finiscono qui, nell'attuale versione della libreria AJAX, negli AJAX Control ToolKit (ACT) è stato introdotto un controllo manager per svolgere le funzionalità di renderizzazione svolte sin qui dallo ScriptManager, che prende il nome di ToolKitScriptManager, ed anche tramite l'uso di questo controllo è possibile ovviare al problema.

Quindi o facciamo uso dello AjaxScriptManager o del ToolKitScriptManager, in entrambi i casi risolviamo l'errore "AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts". Ma che differenza c'è nell'uso dell'uno e dell'altro? Quali dei due è più perfromante?

Il ToolKitScriptManager sembra che sia in grado di ridurre il numero di browser's round-trips combinando i riferimenti agli script in uno solo, se da un lato questo è sicuramente un vantaggio, in quanto gli script lato client vengono scaricati tutti in una volta, d'altro canto bisogna tenere in considerazione l'ammontare del lavoro svolto per comprimere i vari riferimenti agli script in uno solo svolto dallo ToolKitScriptManager, tale lavoro dipende dal numero degli script (numero di controlli AJAX client usati) e dalla loro lunghezza (complessita del controllo Ajax). Quindi non necessariamente l'uso del ToolKitScriptManager è da preferire a quello dell'AjaxScriptManager, ci sarebbe da valutarlo caso per caso e magari fare qualche test sulla velocità di renderizzazione della pagina.

Ad ogni modo entrambi sono in grado di gestire correttamente le chiamate asincrone e restituire la renderizzazione corretta della pagina per la nuova versione della ASP.NET Ajax Library, risolvendo l'errore di riferiemento "AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts".

Chiunque volesse aggiungere qualcosa in merito all'argomento o porre una domanda può farlo benissimo tramite i commenti.

Categorie: Ajax | ASP.NET | fix | Visual Studio

Tags: , ,

Commenti (1) -

Bene, stavo avendo alcuni problemi con il mio sito. Grazie per queste informazioni utili. Io voglio il mio sviluppatore web un'occhiata a questo e forse siamo in grado di affrontare alcune delle questioni. Grazie.

Rispondi

Aggiungi Commento

biuquote
Loading