Mappage des touches individuelles sur ASP.NET MVC Vue d'actions d'un contrôleur
J'ai une application dans laquelle j'ai besoin de l'utilisateur d'être en mesure de mettre à jour ou supprimer des lignes de données de la base de données. Les lignes sont affichées à l'utilisateur à l'aide d'une boucle foreach dans le .aspx fichier de mon point de vue. Chaque ligne aura deux champs de texte (txtName, txtDesc), un bouton de mise à jour, et un bouton supprimer. Ce que je ne suis pas sûre, c'est comment faire pour avoir la mise à jour bouton envoyer le message au contrôleur pour la ligne à mettre à jour? Je peux voir un couple des manières de le faire:
- Mettre chaque ligne à l'intérieur de son propre balise de formulaire, puis lors de la mise à jour, le bouton est cliqué, il remet les valeurs de la ligne (il y aura aussi un champ caché avec rowId) et le contrôleur de la classe prendre toutes les valeurs post comme paramètres à la méthode de mise à Jour sur le contrôleur.
- En quelque sorte, ont le bouton générer le script de façon à envoyer uniquement les valeurs de cette ligne un POST pour le contrôleur.
Est-il un moyen de faire cela? Une chose que je suis inquiète, c'est si chaque ligne a des noms différents pour les contrôles attribué par ASP.NET (txtName1, txtDesc1, txtName2, txtDesc2), alors comment leurs valeurs répertoriées les paramètres corrects de la méthode de Contrôleur?
OriginalL'auteur skb | 2009-01-02
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser de multiples formes, et de définir l'action sur la forme comme ceci:
De sorte que vous aurez
YourController/YourAction/1
,YourController/YourAction/2
et ainsi de suite.Il n'est pas nécessaire de donner des noms différents pour les différentes zones de texte, il suffit d'appeler leur txtName, txtDesc etc (ou encore mieux, de se débarrasser de ces txt préfixes). Depuis qu'ils sont dans des formes différentes, ils ne se mélangent pas.
Puis sur l'action que vous faites quelque chose comme
Où nom d'utilisateur, la description sont les mêmes noms que vous avez utilisé sur les contrôles de formulaire (si elles sont mappés automatiquement). Le paramètre id sera automatiquement adressé au numéro que vous avez mis sur l'action du formulaire.
Si je suis en utilisant un ASP.NET de contrôle de l'utilisateur pour chaque ligne, et dans le contrôle, je suis en utilisant ASP.NET les zones de texte et les boutons, est-il possible de faire le tout répété le nom, l'ID unique de la chose?
Ou vous pouvez également créer un simple bouton html et obtenez sa valeur de Contrôleur de la méthode post: weblogs.asp.net/dfindley/archive/2009/05/31/...
OriginalL'auteur rodbv
Vous pouvez également avoir plusieurs "valide-nommé" boutons sur la forme comme:
et de vérifier pour voir quel soumettre que vous avez reçu. Il peut être une seule action submit envoyé par formulaire, de sorte qu'il est comme tous les autres boutons de soumission n'ont pas réellement existé en premier lieu:
Je pense aussi que vous pouvez mettre en œuvre une coutume ActionMethodSelectorAttribute comme ici http://weblogs.asp.net/dfindley/archive/2009/05/31/asp-net-mvc-multiple-buttons-in-the-same-form.aspx (également répertorié ci-dessus) pour avoir plus propre séparés code.
OriginalL'auteur Interfector
Comme rodbv dit que vous voulez utiliser séparée
<form>
éléments.Lorsque vous utilisez Asp.Net MVC classique ou html (php, asp classique, etc) vous avez oublier le Asp.Net chemin de la manipulation des boutons. Lorsqu'un formulaire est affiché de retour sur le serveur tous le serveur sait à ce sujet est tout simplement "le formulaire a été envoyé, et contenait les éléments suivants apport d'éléments".
Asp.net (standard) ajoute un wrapper ronde de nombreuses de la norme html de publication actions à l'aide de javascript (l' __doPostback fonction javascript est utilisé presque partout) et ce qui ajoute de l'information au sujet de laquelle l'élément d'entrée de la forme a causé la publication et la transmet au serveur sous une forme cachée de la variable. On pouvait imiter ce comportement si vous avez vraiment voulu, mais je recommanderais contre elle.
Il peut sembler étrange de "salir" une page avec de nombreux
<form>
's, cependant, il signifie que la publication sur le serveur sera plus léger de poids et doit tout faire courir un peu plus rapide pour l'utilisateur.OriginalL'auteur Ash