2012-11-19 2 views
2

J'essaie de soumettre un Ajax.BeginForm en utilisant un lien hypertexte par opposition à un bouton Soumettre. Je l'ai testé avec le bouton d'envoi et l'action reconnaît le poste Ajax basé par Request.IsAjaxRequest test, si je tente le retourne IsAjaxRequest suivant false:Soumettre Ajax.BeginForm via ActionLink

<a href="javascript:void(0)" onclick="javascript:document.forms[0].submit(); return false;">Update</a> 
+0

Pourquoi ne pas s'en tenir au bouton de soumission? – hawkke

+1

C'est une exigence mais j'ai trouvé une solution de contournement, j'utilise le lien pour déclencher le clic sur le bouton d'envoi. J'ai le bouton de soumission se cachant sur la page. – user1790300

Répondre

4

La forme est accroché dans la bibliothèque Ajax de Microsoft, afin que vous puissiez N'appelez pas simplement form.submit() car les événements ajax câblés ne sont pas activés. Vous avez quelques options:

  • Utilisez un bouton d'envoi à la place d'un lien
  • Drop the substance MS Ajax et câbler manuellement vos messages ajax avec jQuery (ce serait ce que je l'aurais fait)
  • appelez le MS Ajax fonction d'envoi

Pour la troisième option, au lieu de

onclick="javascript:document.forms[0].submit(); return false;" 

Essayez

onclick="javascript:$('#form').onSubmit(); return false;" 

Mais je ne l'ai jamais utilisé donc je ne sais pas si cela va fonctionner. Vous pouvez également regarder here pour la solution, car il semble exactement comme ce que vous essayez d'accomplir.

+0

Le 'unobtrusive-ajax.js' est à l'écoute de l'événement submit du formulaire - donc l'appel de' form.submit' * devrait * déclencher le script Ajax. http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.unobtrusive-ajax.js – McGarnagle

+0

@McGarnagle, ça ne marche pas toujours. Dans la vue, un appel form.submit() dans le sens d'un fonctionnera mais si vous faites un form.submit() dans un fichier JS et que vous ciblez le formulaire, le fichier discret-ajax.js ne déclenche pas le travail. –