2

处理此问题的最佳方法是什么:

class Option {
    int id;
    string name;
}

class QuoteItem
{
     IList<Option> options;
}

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

基本上,我有所有可用的选项allOptions。我想要一个复选框,在选中时将另一个Option(即使它只是它的id)放入QuoteItem.options列表中。我将如何做到这一点?最好是IList<bool>在事后绑定它吗?

4

1 回答 1

2

我建议你看看Phil Haack 的这篇关于模型绑定到列表的博客文章

对于您的情况,您可以使用简单的模型绑定到 a IEnumerable<int> options,其中的值将是您选择的选项的 id。

您的输入视图将如下所示:

<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>

隐藏的输入包含您选择的 optionId 的注释名称属性,这对于每个隐藏的输入都是相同的。默认模型绑定器可以将其绑定到整数列表。

接下来需要做的事情是在客户端添加/删除隐藏的选项输入,具体取决于是否在“所有选项”选择控件中选择了一个项目。

于 2010-02-19T11:29:17.670 回答