Question

Quelle est la meilleure façon de gérer cela:

class Option {
    int id;
    string name;
}

class QuoteItem
{
     IList<Option> options;
}

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

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

Était-ce utile?

La solution

Je vous suggère de jeter un regard à ce entrée de blog 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 liant à base de modèle par défaut peut se lier à cette liste de nombres entiers.

La chose que vous devez faire est l'ajout / suppression d'une entrée d'options cachées à côté client selon que l'élément est sélectionné dans vos « toutes-options », sélectionnez le contrôle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top