2010-02-18 17 views
2

Quelle est la meilleure façon de gérer cela:ASP.NET MVC 2.0 - IList <T> CheckBoxes

class Option { 
    int id; 
    string name; 
} 

class QuoteItem 
{ 
    IList<Option> options; 
} 

class QuoteViewModel { 
    IList<Option> allOptions; 
    QuoteItem quoteItem; 
} 

Fondamentalement, j'ai toutes les options disponibles dans allOptions. Je veux avoir une case à cocher qui met un autre Option (même si c'est juste son id) dans la liste QuoteItem.options quand il est coché. Comment pourrais-je accomplir cela? Serait-il mieux un IList<bool> et le lier après le fait?

Répondre

2

Je vous suggère de prendre regardez cette blog entry de Phil Haack à propos de modèle de liaison à une liste

Pour votre situation, vous pouvez utiliser modèle simple liaison à un IEnumerable<int> options, où les valeurs seront l'id de vos options sélectionnées.

votre point de vue d'entrée sera alors ressembler à quelque chose comme ceci:

<form method="post" action="/QuoteItems/SetOptions"> 
     <input type="hidden" name="options" value="1" /> 
     <input type="hidden" name="options" value="4" /> 
     <input type="hidden" name="options" value="2" /> 
     <input type="hidden" name="options" value="8" /> 
     <input type="submit" /> 
    </form> 

Les entrées cachées contiennent vos années optionId sélectionné, notez l'attribut name qui est la même pour chaque entrée cachée. Le classeur de modèle par défaut peut lier ceci à une liste d'entiers. La prochaine chose à faire est d'ajouter/de supprimer une entrée d'options cachées côté client selon que vous avez sélectionné un élément dans votre champ de sélection "toutes options".

+0

Ce message est assez obsolète. J'utilise MVC 2.0 –

+0

Je crois qu'il est encore valide dans MVC 2.0, au moins dans l'aperçu 1 – Rik