MVC qui soumettre le bouton a été pressé
J'ai deux boutons sur mon MVC forme:
<input name="submit" type="submit" id="submit" value="Save" />
<input name="process" type="submit" id="process" value="Process" />
De mon Contrôleur de l'action comment puis-je savoir laquelle ont été pressée?
- Pourquoi ne pas simplement ajouter un événement onclick de ces boutons qui vont à leur propre appel AJAX qui vont à leur méthodes appropriées? c'est à dire:
<input name="submit" type="submit" id="submit" value="Save" onclick="saveMethod" />
?
Vous devez vous connecter pour publier un commentaire.
Nom de vos deux boutons submit, le même
Puis dans votre contrôleur obtenir la valeur de la soumettre. Seul le bouton cliqué va passer sa valeur.
Bien sûr, vous pouvez évaluer la valeur d'effectuer différentes opérations avec un bloc de commutateurs.
<button type="submit" name="action" value="draft"> Internationalized Save Text </button>
pour l'i18n fins, de sorte que l'utilisateur face à la chaîne est personnalisable, et de la forme des noms d'élément ne sont jamais exposés directement à l'utilisateur (ce qui est étrange dans et de lui-même)Et dans les actions de votre contrôleur:
c'est une meilleure réponse, de sorte que nous pouvons avoir à la fois du texte et de la valeur d'un bouton:
http://weblogs.asp.net/dfindley/archive/2009/05/31/asp-net-mvc-multiple-buttons-in-the-same-form.aspx
et le contrôleur:
en bref son un bouton SOUMETTRE, mais vous choisissez le nom en utilisant le nom de l'attribut, son encore plus puissant parce que vous n'êtes pas obligé de le nom de soumettre ou un bouton dans le contrôleur de paramètres de la méthode, vous pouvez l'appeler comme vous le souhaitez...
vous pouvez identifier votre bouton à partir de là le nom de la balise, comme ci-dessous,
Vous avez besoin de vérifier ce genre dans vous de contrôleur
Voici une très belle et simple moyen de le faire avec vraiment facile à suivre les instructions en utilisant un custom MultiButtonAttribute:
http://blog.maartenballiauw.be/post/2009/11/26/Supporting-multiple-submit-buttons-on-an-ASPNET-MVC-view.aspx
Pour résumer, faire vos boutons submit, comme ceci:
Vos actions comme ceci:
Et de créer cette classe:
MultiButtonAttribute
attribut personnalisé pour permettre la différenciation entre les boutons de soumission. En fait tout à fait une bonne idée.Arnis L.
avait suivi le même avis, vous avez remarqué qu'il a fourni exactement le même lien 4 ans plus tôt :>Pour le rendre plus facile, je vais dire vous pouvez changer vos boutons suivants:
De votre contrôleur:
Ce post ne va pas répondre à Coppermill, car il a été répondu il y a longtemps. Mon post sera utile pour qui la recherche de solution de ce genre. Tout d'abord , je dois dire que "WDuffy la solution est tout à fait correcte" et il fonctionne très bien, mais ma solution (et non pas la mienne) sera utilisée dans d'autres éléments et il rend la couche de présentation plus indépendante de contrôleur (parce que votre contrôleur dépendent de la "valeur", qui est utilisé pour montrer l'étiquette du bouton, cette fonction est importante pour d'autres langues.).
Voici ma solution, de leur donner des noms différents:
Et vous devez spécifier le nom des boutons comme arguments dans l'action comme ci-dessous:
lorsque l'utilisateur envoie la page à l'aide de l'un de ces boutons, un seul des arguments de valeur. Je suppose que ce sera utile pour les autres.
Mise à jour
Cette réponse est assez ancien et je fait reconsidérer mon avis . peut-être la solution ci-dessus est bon pour la situation qui en passant paramètre de propriétés du modèle. ne vous embêtez pas à vous-mêmes et de prendre la meilleure solution pour votre projet.
input[type=submit]
valeur qui a été déclenchée, afin qu'ils puissent tous modèle de lier une propriété du mêmename
(ex.action
) et puis vous pouvez différencier les boutons de fonction sur lavalue
de cette chaîne sans avoir à présenter de nombreuses variables dans votre signature. Veuillez également prendre le temps de réfléchir sur la mise en forme et les empreintes avant de poster.Donner le nom de deux boutons et d'Obtenir la vérification de la valeur de la forme.
Sur le contrôleur de côté :
Core 2.2 pages Razor cette syntaxe fonctionne:
Pouvez-vous ne pas savoir à l'aide de la Demande.Formulaire De Collecte? Si le processus est cliqué sur la demande.form["processus"] ne sera pas vide