2

J'ai un formulaire ASP.NET MVC 2 qui fonctionne parfaitement, en effectuant une validation côté client (en utilisant des annotations de données). Chaque fois que les utilisateurs cliquent sur le bouton Soumettre, la validation côté client intervient avant que le formulaire ne soit réellement renvoyé au serveur.Comment soumettre un formulaire ASP.NET MVC en utilisant javascript et valider encore du côté client?

Ceci est le code réel, des choses vraiment de base:

<% Html.EnableClientValidation(); %> 
<% using (Html.BeginForm()) { %> 
    <%= Html.ValidationSummary(true) %> 
    <%: Html.EditorForModel() %> 
    <p> 
     <input type="submit" value="Save" /> 
    </p> 
<% } %> 

Voici mon problème: je veux soumettre le formulaire à l'aide d'un bouton qui est pas dans le < FORM> </FORM> comme un dans l'échantillon ci-dessus. Ce bouton doit être placé à l'intérieur d'un < DIV> séparé sur la page qui fonctionne comme une barre d'outils pour tous les boutons et actions dans mon application.

Je suis en mesure de soumettre le formulaire en utilisant quelque chose comme ceci (en utilisant jQuery):

<asp:Content ID="Content2" ContentPlaceHolderID="ToolBarContent" runat="server"> 
    <input type="submit" value="Save" onclick="$('#form0').submit();" /> 
</asp:Content> 

Le seul problème est que cela ne déclenche pas la validation du côté client, comme si l'utilisateur cliquait dans la bouton de soumission normal. L'ensemble du formulaire est renvoyé, la validation côté serveur est effectuée et la vue est à nouveau affichée, indiquant les erreurs de validation.

Je ne veux pas avoir ce bouton habituel de soumission avec le formulaire, il suffit d'avoir celui-ci dans la barre d'outils, alors y a-t-il un moyen d'y parvenir? Avoir un bouton séparé appelle l'envoi du formulaire tout en déclenchant la validation côté client pour le formulaire?

Répondre

2

Essayez ce hack:

<input type="submit" value="Save" onclick="$('#dummy').click();" /> 

dummy est un bouton caché submit l'intérieur de votre forme.

Le bouton Save n'a pas besoin d'être un bouton submit s'il n'est pas placé dans un form.

+0

Man ... Vous êtes rapide !!! ... :) Votre solution ne fonctionne pas vraiment, même Bien qu'il semble un peu hacky, comme vous l'avez dit. Si personne d'autre ne trouve un meilleur moyen, je vais le laisser comme ça et prendre votre réponse pour ça :) Merci mon gars! –

0

Vous pouvez essayer le plugin Ajax Form de jQuery.

http://jquery.malsup.com/form/

Vous pouvez aussi joindre le soumettre événement du formulaire via $('#form').submit(function() { })

0

méthodes de validation sont attachés à l'événement de présenter la forme, ce qui signifie devriez être en mesure d'appeler form.submit() de javascript et les événements de soumission devraient encore tirer.

+0

Eh bien, apparemment ce n'est pas tout à fait raison avec les routines de validation côté client MVC. Je viens de tester votre solution, et bien que cela fonctionne pour soumettre le formulaire, la validation ne se produit pas du côté client avant que le formulaire ne soit envoyé. L'ensemble du formulaire est affiché sans validation, puis le modèle est validé sur le serveur et le contrôleur renvoie à nouveau la vue avec les messages d'erreur. –

0

Essayez $("#yourform").validate("submit"); si vous utilisez MicrosoftMvcValidation.js ou $("#yourform").validate() si vous utilisez jquery.validate.js

Questions connexes