Le passage des données à partir de l'Affichage de Contrôleur de
Dans un ASP.NET application MVC, je suis en train de faire de la logique pour l'administration d'accepter ou de refuser de nouveaux membres. Je fais preuve d'une liste de membres et de deux boutons d'Accepter et de Rejeter, comme ceci:
<% foreach (var mm in (ViewData["pendingmembers"] as List<MyMember>)) %>
<% { %>
<tr><td>Username:<%=mm.UserName %></td><td>
<tr><td>Firstname:<%=mm.FirstName %></td><td>
...etc...
<tr>
<td>
<% using (Html.BeginForm("AcceptPendingUser", "Admin"))
{ %>
<input type="submit" value="Accept" />
<% } %>
</td>
<td>
<% using (Html.BeginForm("RejectPendingUser", "Admin"))
{ %>
<input type="submit" value="Reject" />
<% } %>
</td>
</tr>
<% } %>
Donc, la liste des membres en attente de données est une liste de MyMember-objets. Chaque MyMember objet sera imprimé membre et de deux boutons de configuration pour l'administrateur d'accepter ou de rejeter en attente d'un membre.
Puis, dans le contrôleur, je suis séparer le traitement de ces deux champs de saisie de formulaires, comme ceci:
public ActionResult AcceptPendingUser()
{
//TODO: Add code to save user into DB and send welcome email.
return RedirectToAction("Index");
}
public ActionResult RejectPendingUser()
{
//TODO: Add code to remove user from PendingUsers list and send rejection email.
return RedirectToAction("Index");
}
Je voudrais obtenir directement l'objet à côté du bouton l'utilisateur a appuyé.
Comment puis-je envoyer le MyMember objet à partir de la Vue du contrôleur?
Ou comment puis-je envoyer peut-être un indice numérique, avec le bouton de la presse? Peut-être avec un champ caché?
OriginalL'auteur Pompair | 2009-01-12
Vous devez vous connecter pour publier un commentaire.
L'option la plus simple serait probablement caché entrée:
(nom en conséquence; dans chaque formulaire)
Les deux contrôleur prendra alors un argument appelé "la clé" (renommer pour répondre). Si vous souhaitez analyser l'objet à partir de plusieurs entrées, vous aurez besoin d'un
ModelBinder
. Bien sûr, au lieu de 2*n forme, vous pourriez envisager de chaîne de requête d'url, ou utiliser quelque chose comme jQuery (ou un autre script helper) pour envoyer les données sans avoir besoin de l'formes (si le script est disponible).Eh bien, chaîne de caractères, puis.
OriginalL'auteur Marc Gravell
Au lieu d'utiliser un bouton HTML envisager l'utilisation d'un ActionLink et construire à inclure l'id du membre en cours d'approbation. Une autre solution serait d'avoir une case à cocher (dont la valeur est l'id du membre approuvé) que l'administrateur peut sélectionner pour chaque membre doit être approuvé et un similaire pour les rejeter et à approuver/rejeter les boutons de la totalité du formulaire.
OriginalL'auteur tvanfosson
Répondre à moi-même et d'autres mvc débutants:
Je l'ai eu enfin le travail avec ce code:
VUE:
CONTRÔLEUR:
Débogage de l'application de la méthode de Saut me donne de nice "Caserne"-chaîne de caractères pour le nom du paramètre, mais Personne paramètre à null.
Je comprends aussi que le genre de commentateurs ont essayé de l'expliquer: c'est facile d'envoyer des types de données simples comme les chaînes et les ints de contrôleur, mais des types complexes comme mon objet Personne a besoin de quelque chose d'autre.
Essentiellement du passage d'un int est assez pour moi. La partie la plus difficile ici est de trouver la bonne façon de configurer ActionLink.
Cheers,
Pom
OriginalL'auteur Pompair