在循环中使用CheckBoxFor

时间:2011-04-13 08:56:11

标签: asp.net-mvc

我可以在循环中使用Html.CheckBoxFor吗?如果是这样的话?

这是我想要做的一个例子。 (这是使用spark,但问题仍然适用于剃须刀或aspx)

<ul class="voteOptions">
    <for each="var answer in poll.Answers">
        <li>!{Html.LabelFor(a =>a.Answer)}</li>
        <li>!{Html.CheckBoxFor(a =>a.Key)}</li>
    </for>
 </ul>

这显然不起作用,因为a表示视图模型而不是循环中的当前项。

2 个答案:

答案 0 :(得分:3)

你可以试试这个:

<for each="var answer in poll.Answers">
    <li>!{Html.LabelFor(a => answer.Answer)}</li>
    <li>!{Html.CheckBoxFor(a => answe.Key)}</li>
</for>

但显然更好的解决方案是永远不要编写任何循环但使用编辑器模板,因为在这种情况下您的代码将变为:

<ul class="voteOptions">
    !{Html.EditorFor(x => x.Answers)}
</ul>

答案 1 :(得分:0)

我不喜欢这样做,但如果你必须使用Html.XXXFor

它会起作用

1:在模型上创建一个名为CurrentAnswer的属性(类型为Answer)

2:在循环设置中回答CurrentAnswer

3:然后调用Html.XXXFor(a =&gt; a.CurrentAnswer)