.NET MVC - Modulo di presentare cause postback invece di onSubmit javascript esecuzione
-
11-09-2019 - |
Domanda
sto cercando di presentare il mio modulo di Ajax con jQuery. chiamando Tuttavia la funzione di presentare () fa sì che l'intera pagina per aggiornare. Si deve solo eseguire la parte onSubmit del modulo (che restituisce false
in modo che la pagina non deve aggiornare).
<%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()%>
Soluzione
Se si utilizza l'Ajax.BeginForm HTML non puoi semplicemente commettere la forma, perché la forma è in qualche modo collegato con ASP.NET MVC Ajax.
Ci sono 3 soluzioni:
più semplice e migliore modo
utilizzare jQuery $ .ajax per commettere la forma
facile, ma strano modo
Mettere un pulsante di invio del modulo. Impostarlo su nascosto e clic su di esso per jquery.
Difficile ma la risposta alla tua domanda
L'ho visto da qualche parte che si può ancora fare esattamente ciò che si descrive, ma era una soluzione che non ha ancora un aspetto gradevole.
Ecco come il suo fare presentare il modulo di esempio
Altri suggerimenti
Quando si chiama inviare () sulla forma che non chiama la funzione onSubmit che è stato creato utilizzando tale funzionalità modulo ajax. Avrete bisogno di chiamare le forme OnSubmit direttamente
es $("#ViewCartPage form").onsubmit()
o meglio solo this.form.onsubmit()
Non dimenticate di includere i parametri che che sono necessari dall'evento Sys.Mvc.AsyncForm.handleSubmit (non so cosa sono come io non lo uso).
Vorrei davvero considerare cadere biblioteca ms ajax js e basta attaccare con jQuery. MS js librerie sono piene di fango scritto male invadente che basta fare le cose più complicate per nessun motivo. Le cose sono molto più semplici utilizzando solo jquery.