Home > ASP.NET > AjaxControlToolkit, CalendarExtender e strana eccezione …

AjaxControlToolkit, CalendarExtender e strana eccezione …

Ajax Control Toolkit consiste in un pacchetto di controlli per ASP.NET+AJAX molto, ma molto, ma molto utile.

Tra i controlli che spesso utilizzo vi è il Calendar Extender, in grado di visualizzare un calendar Ajax per la selezione di una data, agganciandolo ad esempio ad un evento “onclick” di una Texbox o di un Linkbutton.

Utilizzando la suddetta libreria ( AjaxControlToolkit.dll versione 3.5.40412.2) è capitato proprio oggi questo tipo di errore:

 

Errore server nell’applicazione ‘/’.

Impossibile modificare l’insieme Controls perché il controllo contiene blocchi di codice (ossia <% … %>).

Descrizione: Eccezione non gestita durante l’esecuzione della richiesta Web corrente. Per ulteriori informazioni sull’errore e sul suo punto di origine nel codice, vedere l’analisi dello stack.

Dettagli eccezione: System.Web.HttpException: Impossibile modificare l’insieme Controls perché il controllo contiene blocchi di codice (ossia <% … %>).

Errore nel codice sorgente:

Durante l'esecuzione della richiesta Web corrente è stata generata un'eccezione non gestita. Per informazioni sull'origine e la posizione dell'eccezione, vedere l'analisi dello stack dell'eccezione riportata di seguito.

Analisi dello stack:

[HttpException (0x80004005): Impossibile modificare l'insieme Controls perché il controllo contiene blocchi di codice (ossia <% ... %>).]
   System.Web.UI.ControlCollection.Add(Control child) +8678391
   AjaxControlToolkit.ScriptObjectBuilder.RegisterCssReferences(Control control) +687
   AjaxControlToolkit.ExtenderControlBase.OnLoad(EventArgs e) +62
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627


Informazioni di versione: Versione di Microsoft .NET Framework:2.0.50727.4200; Versione di ASP.NET:2.0.50727.4205

Strano. Un errore che apparentemente non ha nulla a che vedere con il CalendarExtender, ma che compare proprio quando viene agganciato il CalendarExtender ad una TextBox, e scompare quando l’Extender viene rimosso.

Mamma Google dice che come al solito, non sono il solo:

http://forums.asp.net/p/1172295/1965060.aspx

I found that moving the javascript with the embedded <% %> tags from the head to the form tag fixes this error

In effetti la pagina ASP.NET su cui sto lavorando utilizza tags embedded <% %> al posto di ClientID statici.

Proviamo un po’ … Eureka!

Spostando la parte di codice dalla <head> alla <form> tag, l’errore scompare, ed il calendar funziona perfettamente.

Più avanti parlerò più approfonditamente di quali controlli del pacchetto Ajax Control Toolkit sono solito utilizzare.

  1. lamilla
    dicembre 7, 2010 alle 14:05 | #1

    Perfetto! Grazie mille

  1. No trackbacks yet.

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Follow

Get every new post delivered to your Inbox.