8
votes

Travail JavaScript avant de soumettre le formulaire ASP.NET MVC

J'ai une vue ASP.NET MVC avec une beinture de beinture, qui spécifie une action et un contrôleur à toucher sur Soumettre. Mais sur Soumettre, je veux appeler un service à l'aide de JQuery pour obtenir des données, puis soumettre ces données avec le formulaire.

Actuellement, j'ai un bouton d'envoi sur le formulaire où l'événement OnClick du bouton appelle la méthode JavaScript. En fonction du résultat que je reçois de la méthode, je souhaite que le formulaire soit soumis à l'action spécifiée.

Maintenant, je ne peux pas obtenir cela pour travailler. Est-ce la bonne façon de le faire ou devrais-je plutôt faire un post en utilisant jQuery? Je pense que ce serait bien d'utiliser ce que j'ai déjà spécifié comme action / contrôleur sous la forme.


0 commentaires

3 Réponses :


13
votes

Je pense que le meilleur moyen est d'utiliser le formulaire "Soumettre" d'événement, car les utilisateurs peuvent vouloir soumettre le formulaire en appuyant sur Entrée dans certains champs. Devinez, il est possible de modifier certaines valeurs d'entrée lors de cet événement,

jQuery('form#myform').submit(function(e){
   //....
   if (somevar == false)
   {
      // stop submitting form
      e.preventDefault();
   }
   else
   {
      jQuery('input#hiddeninput').val('somevalue');
   }
})


1 commentaires

bonne réponse, mais pas exactement ce que je veux faire. Je souhaite démarrer une demande Ajax pour certaines données et uniquement sur la réponse de Soumettre / rediriger le formulaire. L'utilisation de l'exemple ci-dessus entraînerait la demande qui ne se termine pas avant que le formulaire soit soumis.



0
votes

Je pense qu'il serait préférable d'effectuer la tâche d'interroger un service Web externe dans une action du contrôleur. De cette façon, vous soumettriez toujours le formulaire à la même action du contrôleur qui interrogera le service et basé sur les résultats rendrait une vue ou rediriger à une autre action.


0 commentaires

3
votes

La solution est Ajouter sur Soumettre l'événement pour former la balise

onsubmit="return onSubmitClick(this);"
 function onSubmitClick(item) {

    console.log(item);

    return false;
}


0 commentaires