ASP.NET ScriptManager Error: this._forum is not a object

1 commento

Mi è capitato alcune volte di ricevere questo errore da una pagina ASP.NET che contiene uno ScriptManager ed un link ad un file JavaScript all’interno del tag Head della pagina, come in questo caso:

[...]
<head runat="server">
    <script type="text/javascript" src="../Scripts/barcode.js" />
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
[...]

Apparentemente il codice è senza errori, ma eseguendo la pagina in debug si riceve un errore come in figura:

Microsoft JavaScript: Necessario oggetto

Microsoft JavaScript: Necessario oggetto

Cliccando sul tasto “Interrompi”, vado a cercare di capire cosa potrebbe essere successo, e mi accorgo che l’oggetto “_form” della pagina non esiste, ovvero è “null”

Oggetto this._form è "null"

Oggetto this._form è "null"

Inutile raccontarvi quanto tempo ci ho messo a cercare di capire cosa diavolo poteva essere successo, e dove poteva essere un eventuale errore; naturalmente senza successo.

Dopo una puntigliosa ricerca su internet, ho torvato finalmente un articolo che mi ha illuminato e salvato.
Sembra che sia un piccolo bug dell’oggetto ScriptManager, che interpreta male il tag <script /> senza chiusura esplicita.

È bastato modificare il tag ed utilizzare la sintassi canonica per risolvere il tutto:

<head runat="server">
    <script type="text/javascript" src="../Scripts/barcode.js" >
    </script>
</head>

Fine del calvario.

Annunci

ASP.NET DropDownList Tips: Elenco mesi

Lascia un commento

Spesso capita di dover presentare la possibilità di scegliere un mese dell’anno. Possiamo farlo tramite un Calendario o anche semplicemente tramite una ComboBox.
Ma se il nostro sito è multilingua? Come facciamo a presentare i nomi dei mesi nella lingua giusta?

Il classico (e sbagliato) approccio dei dodici listitem dichiarati esplicitamente, che siano nella pagina ASPX, che siano nel codeBehind, non ci permette di essere “dinamici” rispetto alla lingua utilizzata nel contesto.

<asp:DropDownList ID="ddlMesi" runat="server">
    <asp:ListItem Text="Gennaio" Value="1" />
    <asp:ListItem Text="Febbraio" Value="2" />
    <!-- ... -->
    <asp:ListItem Text="Novembre" Value="11" />
    <asp:ListItem Text="Dicembre" Value="12" />
</asp:DropDownList>

Questo esempio ci fa notare che la visualizzazione dei dati è troppo legata alla scelta dello sviluppatore, e implementa l’esigenza solo per un caso singolo.

Per essere elastici e creare la medesima lista a runtime, e crearla nella lingua utilizzata nel contesto, ecco un piccolo snippet da usare nel codeBehind per una DropDownList vuota:

if (this.ddlMesi.Items.Count <= 1)
    for (int i = 1; i <= 12; i++)
    {
        ddlMesi.Items.Add(new ListItem(
            System.Globalization.DateTimeFormatInfo.CurrentInfo.GetMonthName(i),
            i.ToString()
        ));
    }

Buona visione….

ASP.NET underground tour

Lascia un commento

Per capire a fondo come utilizzare al meglio ASP.NET risulta necessario conoscere il funzionamento base del web: come avviene una richiesta dal browser verso il server, quali sono le tecnologie utilizzate e come un server web elabora una richiesta.

Capire perché una pagina web non viene interpretata nel modo giusto da un browser, perché una richiesta non viene eseguita come ci si aspetta, generare il giusto codice HTML da un controllo personalizzato, sono questioni che non dipendono solo dalla conoscenza di ASP.NET (o qualsiasi altra tecnologia utilizzata), ma anche dalla conoscenza del funzionamento di un’applicazione web.

Altro

AJAX – Chi è il padre della metodologia?

1 commento

Nel 2005 Jesse James Garrett coniò il termine descrivendo, nel suo blog, il novo approccio alla programmazione web;
Prendendo spunto dal clamore di Google Maps e Google Suggest, Garrett stava facendo notare come il gap tra applicazioni desktop e applicazioni web si stava riducendo drasticamente in fatto di interazione e User Experience.

Ecco la frase che ha reso famoso Garrett:

Google Suggest and Google Maps are two examples of a new approach to web applications that we at Adaptive Path have been calling Ajax. The name is shorthand for Asynchronous JavaScript + XML, and it represents a fundamental shift in what’s possible on the Web.

Altro

ASP.NET Browser Capabilities and Filtering sintax

Lascia un commento

 

Uno dei temi caldi che uno sviluppatore web deve “sempre” affrontare, è sicuramente la “browser compatibility”, ovvero rendere il sito accessibile e di stesso aspetto (per quanto possibile) indipendentemente dal browser utilizzato.
Costruire un sito Cross-Browser, ovvero un sito che abbia la capacità di supportare tutti i browser, implica un lavoro non indifferente sia per chi svolge il ruolo di sviluppatore, sia per chi svolge il ruolo di grafico.
A partire dagli anni 90, quando iniziò la “guerra dei browser”, e fino a questi ultimi anni, quando la concorrenza tra diversi browser si è ancor di più allargata, si sono sviluppate molteplici tecniche per arrivare allo stesso risultato.
In questo articolo voglio presentare come Microsoft ha affrontato questo problema, mettendo a disposizione diversi strumenti, classi e “feature” per .

Altro

C# Tips – Using delegate in List.Find() predicate

Lascia un commento

Se avessimo sotto mano un linguaggio funzionale (ad esempio ), potremmo gestire in maniera facilissima una collection o una lista.
Con il Framework , possiamo lavorare ugualmente in maniera più funzionale con i (Approfondimento). Utilizzando questa feature del possiamo elaborare i nostri dati in maniera molto più immediata, specialmente grazie ai (anonymous delegates).

Un esempio che voglio riportare, ed è anche il più frequente che mi è capitato di sviluppare, è l’utilizzo di questi delegate per la funzione di ricerca di una lista generica ()

Altro

ASP.NET GridView – OnRowDataBound vs OnRowCreated

Lascia un commento


CodeProject

Stamattina, mentre stavo creando una semplice pagina ASP.NET, ho lottato un paio di ore contro una GridView che apparentemente lavorava in maniera anomala.

Quale argomento preferisci?

 

Descrizione del problema

Il problema che riscontravo sembrava un’errata creazione degli ID dei controlli ClientSide. Generalmente il motore ASP.NET si prende carico di modificare gli ID per evitare la duplicazione di identificativi che dovrebbero essere univoci. Proprio nel caso di una GridView infatti, un controllo che noi inseriamo con ID=”txtSelectedValue”, e che viene ripetuto per ogni riga della griglia, avrà un ClientID simile a questo:
Altro

Older Entries

%d blogger hanno fatto clic su Mi Piace per questo: