J'ai deux boutons sur mon formulaire MVC:
<input name="submit" type="submit" id="submit" value="Save" />
<input name="process" type="submit" id="process" value="Process" />
À partir de mon action de contrôleur, comment savoir lequel a été pressé?
c#
asp.net
asp.net-mvc
razor
Coppermill
la source
la source
<input name="submit" type="submit" id="submit" value="Save" onclick="saveMethod" />
:?Réponses:
Nommez vos deux boutons d'envoi de la même manière
Ensuite, dans votre contrôleur, obtenez la valeur de submit. Seul le bouton cliqué passera sa valeur.
Vous pouvez bien sûr évaluer cette valeur pour effectuer différentes opérations avec un bloc de commutation.
la source
<button type="submit" name="action" value="draft"> Internationalized Save Text </button>
à des fins i18n, de sorte que la chaîne face à l'utilisateur est personnalisable et les noms des éléments de formulaire ne sont jamais directement exposés à l'utilisateur (ce qui est étrange en soi)Et dans l'action de votre contrôleur:
la source
c'est une meilleure réponse, nous pouvons donc avoir à la fois du texte et une valeur pour 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 c'est un bouton SUBMIT mais vous choisissez le nom en utilisant l'attribut name, c'est encore plus puissant car vous n'êtes pas obligé de soumettre le nom ou de bouton dans les paramètres de la méthode du contrôleur, vous pouvez l'appeler comme vous le souhaitez ...
la source
vous pouvez identifier votre bouton à partir de là étiquette de nom comme ci-dessous, vous devez vérifier comme ça dans votre contrôleur
la source
Voici une façon vraiment simple et agréable de le faire avec des instructions vraiment faciles à suivre à l'aide d'un MultiButtonAttribute personnalisé:
http://blog.maartenballiauw.be/post/2009/11/26/Supporting-multiple-submit-buttons-on-an-ASPNET-MVC-view.aspx
Pour résumer, créez vos boutons de soumission comme ceci:
Vos actions comme ceci:
Et créez cette classe:
la source
MultiButtonAttribute
attribut personnalisé pour permettre de différencier les boutons d'envoi. En fait, une bonne idée.Arnis L.
avait suivi le même conseil, vous avez peut-être remarqué qu'il a fourni exactement le même lien 4 ans plus tôt:>la source
Pour faciliter les choses, je dirai que vous pouvez modifier vos boutons comme suit:
Votre contrôleur:
la source
Ce message ne répondra pas à Coppermill, car on lui a répondu il y a longtemps. Mon message sera utile pour qui recherchera une solution comme celle-ci. Tout d'abord, je dois dire que "la solution de WDuffy est totalement correcte" et cela fonctionne bien, mais ma solution (pas vraiment la mienne) sera utilisée dans d'autres éléments et cela rend la couche de présentation plus indépendante du contrôleur (parce que votre contrôleur dépend de "valeur" qui est utilisée pour afficher l'étiquette du bouton, cette fonctionnalité est importante pour les autres langues.).
Voici ma solution, donnez-leur des noms différents:
Et vous devez spécifier les noms des boutons comme arguments dans l'action comme ci-dessous:
lorsque l'utilisateur soumet la page à l'aide de l'un des boutons, un seul des arguments aura une valeur. Je suppose que cela sera utile pour les autres.
Mettre à jour
Cette réponse est assez ancienne et je reconsidère en fait mon opinion. peut-être que la solution ci-dessus est bonne pour la situation qui passe le paramètre aux propriétés du modèle. ne vous inquiétez pas et prenez la meilleure solution pour votre projet.
la source
input[type=submit]
valeur qui a été déclenchée, afin qu'ils puissent tous se lier au modèle à une propriété avec le mêmename
(ex.action
) Et ensuite vous pouvez différencier les boutons en fonction de lavalue
de cette chaîne sans avoir besoin d'introduire autant de variables dans votre signature . Veuillez également prendre le temps de réfléchir au formatage / retrait avant de publier.Vous ne pouvez pas le savoir en utilisant Request.Form Collection? Si le processus est cliqué, request.form ["process"] ne sera pas vide
la source
Donnez le nom aux deux boutons et obtenez le contrôle de la valeur du formulaire.
Côté contrôleur:
la source
Dans les pages Razor Core 2.2, cette syntaxe fonctionne:
la source
string submit
écriturestring submit = Request.Form["Submit"];
. L'un des plus grands avantages de Razor Pages et / ou MVC est la lisibilité des méthodes, sinon cela pourrait être PHP.