.NET MVC - Envoi de formulaire des causes Postback au lieu de onSubmit javascript exécution
-
11-09-2019 - |
Question
Je suis en train de soumettre mon formulaire Ajax en utilisant jQuery. Cependant l'appel de la fonction d'envoi () provoque la page entière pour se rafraîchir. Il faut simplement exécuter la partie onSubmit du formulaire (qui retourne false
de telle sorte que la page ne doit pas rafraîchir).
<%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()%>
La solution
Si vous utilisez le code HTML Ajax.BeginForm vous ne pouvez pas simplement engager la forme, parce que la forme est en quelque sorte accroché avec ASP.NET MVC Ajax.
Il y a 3 solutions:
plus facile et meilleure
Utilisez jquery .ajax $ pour commettre la forme
facile, mais bizarrement
Mettre un bouton d'envoi sur le formulaire. Réglez-le et cliquez caché par jquery.
Difficile mais la réponse à votre question
Je l'ai vu quelque part que vous pouvez toujours faire exactement ce que vous décrivez, mais il était une solution, il na pas l'air bien.
Voici comment son fait soumettre exemple de formulaire
Autres conseils
Lorsque vous appelez submit () sur le formulaire qu'elle ne remet pas la fonction onSubmit qui a été créée en utilisant cette fonctionnalité de formulaire ajax. Vous aurez besoin d'appeler les formulaires directement onsubmit
ou mieux $("#ViewCartPage form").onsubmit()
par exemple juste this.form.onsubmit()
Ne pas oublier d'inclure tous les paramètres nécessaires par l'événement Sys.Mvc.AsyncForm.handleSubmit (ne sais pas ce qu'ils sont que je ne l'utilise pas).
Je voudrais vraiment envisager de laisser tomber la bibliothèque du ms ajax et juste coller avec jQuery. Les ms js libs sont pleins de muck importune mal écrit qui vient de rendre les choses plus compliquées pour aucune raison. Les choses sont beaucoup plus simples en utilisant seulement jquery.