.NET MVC - Formular Senden verursacht Postback anstelle von OnSubmit JavaScript -Ausführung
-
11-09-2019 - |
Frage
Ich versuche mein AJAX -Formular mit JQuery einzureichen. Wenn Sie jedoch die Funktion subjekt () aufrufen, wird die gesamte Seite aktualisiert. Es sollte einfach den Teil des Formulars ausführen (der zurückgibt false
damit die Seite nicht aktualisiert werden sollte).
<%Ajax.BeginForm("AllocateAndUpdateMech",
New With {.Controller = "Planning",
.Id = Model.Id},
New AjaxOptions With {
.LoadingElementId = "loading",
.UpdateTargetId = Model.Id & "_alloc"},
New With {.id = "allocate_" & Model.Id & "_" & item.UserId}
)%>
<%Html.Hidden("mechId", item.UserId)%>
<a href="javascript:void(0);" onclick="$('#<%="allocate_" & Model.Id & "_" & item.UserId %>').submit();">Allocate: <%=item.UserName%></a>
<%Html.EndForm()%>
Lösung
Wenn Sie die HTML Ajax.Beginform verwenden, können Sie das Formular nicht einfach begehen, da das Formular irgendwie mit ASP.NET MVC AJAX angeschlossen ist.
Es gibt 3 Lösungen:
Am einfachsten und am besten
Verwenden Sie Jquery $ .ajax, um das Formular zu begehen
Einfacher, aber seltsamer Weg
Setzen Sie eine Sendetaste auf das Formular. Stellen Sie es auf versteckt und klicken Sie auf jQuery.
Schwierig, aber die Antwort auf Ihre Frage
Ich habe es irgendwo gesehen, dass Sie immer noch genau das tun können, was Sie beschreiben, aber es war eine Problemumgehung, die es nicht gut aussah.
So ist es, wie es gemacht wird Formularprobe einreichen
Andere Tipps
Wenn Sie Suble () in dem Formular anrufen, wird die Onsubmit -Funktion nicht aufgerufen, die durch die Verwendung dieser AJAX -Formfunktion erstellt wurde. Sie müssen die Formulare direkt anrufen
z.B $("#ViewCartPage form").onsubmit()
Oder besser gerecht this.form.onsubmit()
Vergessen Sie nicht, Parameter einzuschließen, die vom sys.mvc.asyncform.Handlesubmit -Ereignis benötigt werden (nicht sicher, was sie sind, da ich es nicht benutze).
Ich würde wirklich in Betracht ziehen, die Frau Ajax JS Library fallen zu lassen und nur bei JQuery zu bleiben. Die Frau JS Libs sind voller schlecht geschriebener, aufdringlicher Dreck, der die Dinge ohne Grund über kompliziert macht. Die Dinge sind mit JQuery viel einfacher.