ScriptManager.RegisterClientScriptInclude funktioniert nicht in UpdatePanel

8

Ich habe das Netz durchgelesen, aber ich habe keine Lösung für das folgende Problem gefunden. Ich habe diese Beispielseite (_ScriptManager.aspx) mit einem ScriptManager , einem UpdatePanel , einem MultiView mit zwei Views und zwei LinkButtons zwei zwischen den Ansichten wechseln. Die zweite Ansicht enthält einige Funktionen, für die ich eine JavaScript-Datei laden möchte (_ScriptManager.js).

Da ich nicht weiß, ob der Benutzer jemals Ansicht 2 besuchen wird, möchte ich die Javascript-Datei nicht statisch für jede Anfrage einfügen. Ich möchte es nur laden, wenn und wenn ich es brauche. Daher muss ich die Skriptdatei während eines asynchronen Postbacks einfügen, für das ich ScriptManager.RegisterClientScriptInclude verwende. Der Schmerz ist: es funktioniert nicht. Das Script-Include wird irgendwie nicht auf dem Client ausgeführt, so dass die Javascript-Funktionen nicht verwendet werden können. Schlimmer noch, der Skriptblock, den ich in ScriptManager.RegisterStartupScript anmelde, wird in diesem Fall nicht ausgeführt! Das ist alles sehr irritierend. Das Interessante ist, dass das Include-Skript und der Skriptblock mit dem asynchronen Postback (Fiddler ist mein Freund :-)) an den Client gesendet werden und die Skriptdatei ebenfalls geladen wird. Aber dann scheint das Javascript irgendwie zu brechen ...

Hat jemand einen Anhaltspunkt oder einen bekannten Fehler?

_ScriptManager.aspx :

%Vor%

_ScriptManager.js (hier füge ich einfach einen dynamischen Inhalt zum Bereich mit id = divDyn hinzu):

%Vor%

_ScriptManager.aspx.cs Code-Behind:

%Vor%     
Oliver 16.12.2009, 18:20
quelle

1 Antwort

10

Nun, das ist erschütternd: nach zwei 2-stündigen Sitzungen, in denen das Problem untersucht wurde, alle Möglichkeiten des ScriptManagers ausprobiert wurden, stattdessen versucht wurde, jQuery zu verwenden und schließlich dieses Beispiel zu schreiben (weil das reale Welt-Setup immer komplizierter ist) ), Fand ich nun diesen kurzen Blogbeitrag , der mein Problem löst - mit einer einzelnen Zeile, die der js-Datei hinzugefügt wurde:

_ScriptManager.js :

%Vor%

Nun, vielleicht wird das für irgendjemanden da draußen von Nutzen sein ...

    
Oliver 16.12.2009, 18:39
quelle