Wie aktualisiere ich ein div mit Ajax.BeginForm UND führe eine JavaScript-Funktion aus?

9

Ich aktualisiere ein Div mit einer Teilansicht, indem ich etwas wie folgt verwende:

%Vor%

und es funktioniert gut, die zurückgegebene Ansicht wird an das div angehängt, aber ich muss nun ein Javascript ausführen, wenn der Beitrag erfolgreich ist, also dachte ich: "einfach, füge einfach OnSuccess = "MyJsFunc()" " zu AjaxOptions hinzu, aber nachdem dies getan wurde, hörte es auf zu arbeiten! Jetzt wird die Seite aktualisiert und nur die zurückgegebene Teilansicht wird gerendert :(, ich habe es sogar mit einem einfachen Alert("Hi") versucht und es funktioniert auch nicht .. wie kann ich das zum Laufen bringen?

(Übrigens denke ich, dass das eine duplex von Ссылка aber diese Frage wurde ohne Antwort aufgegeben)

    
Francisco Noriega 01.10.2010, 16:06
quelle

2 Antworten

16

Irgendein Grund, es nicht richtig zu machen (nach allem, was wir 2010 sind)? Dump MS AJAX, wo es zusammen mit allen Ajax.* Helfer, die davon abhängen und richtigen Code schreiben. Während die Verwendung von MS AJAX in klassischen Webforms aufgrund der UpdatePanels gerechtfertigt sein könnte, scheint es heute eine schlechte Idee zu sein, dies in einer neuen ASP.NET MVC-Anwendung zu tun, insbesondere nachdem Microsoft jQuery vollständig angenommen hat.

Nach der Tirade hier ist meine Empfehlung:

%Vor%

und fügen Sie dann den Submit-Handler unauffällig mithilfe von jquery in einer separaten Datei an:

%Vor%

oder verwenden Sie das ausgezeichnete jquery form-Plugin :

%Vor%

Vorteile dieses Ansatzes:

  • Unauffällig
  • Klare Trennung zwischen Markup und JavaScript
  • Caching von Javascript-Dateien und Verringerung der Bandbreitennutzung

Bonusvorteil: keine Kopfschmerzen.

    
Darin Dimitrov 01.10.2010, 17:03
quelle
5

Ich sah mich weiter um und fand die Antwort hier:

Weisen Sie eine Javascript-Funktion zu AjaxOptions OnSuccess-Eigenschaft löst einen Fehler aus - ASP.NET MVC (mit der Antwort, die nicht ausgewählt wurde)

Zitieren Atzu

  

Wenn Sie einen Parameter an übergeben müssen   das OnSuccess-Ereignis, das Sie möglicherweise müssen   schreibe die Funktion auf diese Weise.

%Vor%

und es hat für mich funktioniert!

    
Francisco Noriega 01.10.2010 16:56
quelle