2017-09-28 1 views
-1

Supposons que vous ayez une page Web de rasoir mvc dans laquelle l'utilisateur peut approuver ou rejeter une demande de certaines sortes mais il devrait également inclure une raison. Maintenant, vous pouvez avoir 2 champs de saisie: le premier est de spécifier une raison pour approuver la demande; la seconde est de spécifier une raison pour rejeter la demande. Dans ce cas, tout ira bien et dandy. Et si vous, en tant que concepteur d'interface utilisateur, pensiez qu'un seul champ pour spécifier la raison serait suffisant? Dans ce cas, vous avez deux boutons ou entrées (un pour l'approbation et un pour le rejet) et pour poster au contrôleur approprié, vous devez avoir deux formulaires pour chacun de ces boutons, mais vous ne pouvez pas partager la 'raison' champ de saisie entre les 2 formulaires.Quelle est la meilleure pratique lors de la gestion des données partagées entre 2 formes différentes dans asp.net mvc?

Alors quelle serait la meilleure pratique pour un tel scénario? PS: Je sais qu'il existe des solutions: utiliser ajax ou autre javascript pour effectuer la publication, définir et utiliser des attributs pour coupler les contrôleurs avec leurs boutons respectifs, en utilisant l'attribut formaction html 5 et peut-être d'autres solutions que j'ai ratées mais soit sembler gadget ou avoir certains inconvénients.

Répondre

2

Pourquoi avez-vous besoin de deux formulaires? Vous pouvez tout simplement faire quelque chose comme ce qui suit:

<form action="" method="post"> 
    <textarea name="reason"></textarea> 
    <button type="submit" name="approve" value="true">Approve</button> 
    <button type="submit" name="approve" value="false">Reject</button> 
</form> 

Les boutons fonctionnent alors de façon similaire à une radio. Quel que soit celui sur lequel l'utilisateur clique, c'est la valeur qui sera affichée. Ensuite, vous pouvez simplement vous connecter sur ce booléen et soit approuver ou rejeter en conséquence.

+0

Merci! Parfois, ce sont les trucs simples qui me plaisent. – user1969903