2010-01-15 6 views
0

Nous utilisons asp.net mvc et avons du mal à sélectionner la liste des commandes approuvées.ASP.net MVC Obtenez uniquement les lignes sélectionnées (case à cocher)

les commandes sont approuvées en sélectionnant la case à cocher pour chaque commande.

par exemple ..

Numéro de commande produit est approuvé 1 livre (dépend si l'utilisateur sélectionne la case ou non) 2 stylo (dépend si l'utilisateur sélectionne la case ou non)

donc actuellement nous sommes faire quelque chose comme ceci: et que vous voulez savoir s'il y a une meilleure façon de implementating

Vue:

notre faux (comme produit par Microsoft)

sur Poste dans la méthode d'action du contrôleur: boucle nous à travers les commandes (qui est une liste d'objets de la commande) en réponse (identifiant de commande) = true, false: nous sélectionnons cet ordre, ou bien nous ne sélectionnez

mais vous voyez que nous voulons éviter d'écrire cette logique dans le contrôleur.

alors des idées?

Répondre

1

Récemment, je répondu à propos de problème similaire:

ASP.NET MVC Checkbox Group

Vous pouvez le faire comme ça (il sera propable boucle foreach):

<% int i = 0; foreach(Order o in Model.Orders) { %> 
<%= Html.CheckBox("orders[" + i + "].Checked") %> 
<%= Html.Hidden("orders[" + i "].ID",Order[i].ID) %> 
<%= Html.Hidden("orders[" + i + "].Checked",false) %> 
<% ++i; } %> 

Votre méthode post sera :

[HttpPost] 
public ActionResult Test(OrdersSelection[] orders) 
{ 
    var selectedOrders = orders.Where(o => o.Checked); 
    return View(); 
} 

et le modèle sera

public class OrdersSelection 
{ 
    public bool Checked { get; set; } 
    public bool ID { get; set; } 
} 
0
public virtual ActionResult MyAction(FormCollection fVals) 
{ 

    var q = from x in fVals.AllKeys 
      where fVals[x] != "false" 
      select x; 
    var ids = q.ToList(); 


    // take id and call service with filter 
    var result = this.myService.FilterResultByID(ids); 


    // then return model 
    return View(result); 


} 
0

Vous pouvez le faire dans le script client en ajoutant/enlevant l'ordre des ids d'une seule entrée cachée que l'utilisateur coche/décoche. Utilisez un tableau, push/splice selon vos besoins et stockez-le dans un champ masqué avec join.
Ensuite, le contrôleur aurait juste à lire une valeur de réponse pour obtenir la liste des identifiants de commande sélectionnés (séparés par des virgules?).

Questions connexes