2009-05-06 3 views
4

Ich verwende ASP.NET MVC-Projekt und jQuery Async-Anforderungen zu behandeln. Manchmal benötige ich für eine asynchrone Anfrage ein Initialisierungs-JavaScript-Snippet, das zusammen mit einem HTML-Snippet zurückgegeben und ausgeführt wird (ich möchte, dass dieses JavaScript auf dem Server gerendert wird).Emulation von ScriptManager.RegisterStartupScript() in ASP.NET MVC-Projekt

Momentan verwende ich meine eigene ScriptsHelper-Klasse mit einer RegisterStartupScript() -Methode (fügt Daten zu HttpContext.Current.Items hinzu). Dann füge ich in global.asax HttpApplication.EndRequest() für asynchrone Anfragen alle registrierten Skripte an die Ausgabe an (eingeschlossen in Tags). jQuery.fn.load() führt sie erfolgreich aus, wenn der empfangene HTML-Code an das DOM angehängt wird - genau das benötige ich. Denken Sie, dass es eine "richtige" (gute) Lösung ist, oder können Sie vielleicht etwas Besseres vorschlagen? Vielen Dank.

Antwort

1

Ich stieß auf eine ähnliche Situation in einem Projekt, bevor ich anfing, jquery zu verwenden und auf eval() zurückzugreifen. Ich habe ein Javascript-Text-Snippet als Teil des Wertes eines nicht sichtbaren DOM-Elements zusammen mit dem Rest des HTML zurückgegeben, den ich in das DOM eingefügt habe.

Ich hatte eine Menge Probleme beim Debuggen dieser Art von dynamisch generierten Javascript in IE6, so dass diese Lösung anständig für mich ausgearbeitet wurde, weil ich den Wert des DOM-Elements überprüfen konnte. Allerdings war ich immer misstrauisch mit eval.

Es klingt wie Ihre Lösung hat eine vernünftige Architektur für das serverseitige Rendering im Gegensatz zu meinem Spaghetti-Code und diese Technik sieht aus wie es passt genau in den Geist von jQuery.fn.load, also würde ich mich keine Sorgen machen zu viel.

0

Ja ich denke, dass jQuery eval() intern für Sie aufruft - verwenden Sie append? Ich denke, dass diese Technik die meiste Zeit ziemlich gut funktioniert. Wenn sich die vom Server zurückgegebenen Daten in einer Liste befinden, die wiederholt wird, können Sie sich die mit jQuery 1.3 hinzugefügte Live-Funktion ansehen. Sie können ein Ereignis an alle aktuellen und zukünftigen Elemente anhängen, die Ihrem Selektor entsprechen. Kasse diese Artikel:

auch als etwas anderes zu betrachten ein tool to help manage scripts and css for asp.net mvc ist. Ich benutze dies und ich liebe es, da es Dateien kombiniert und komprimiert. Sie können alles über Ihre Web-Konfiguration konfigurieren.