.NET MVC - Envoi de formulaire des causes Postback au lieu de onSubmit javascript exécution

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

  •  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()%>
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top