.NET MVC - Formular Senden verursacht Postback anstelle von OnSubmit JavaScript -Ausführung

StackOverflow https://stackoverflow.com/questions/1097490

  •  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()%>
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top