问题描述
|
我可以在循环中使用Html.CheckBoxFor吗?如果可以,怎么办?
这是我正在尝试做的一个例子。 (这使用的是spark,但问题仍然适用于razor或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
表示视图模型而不是循环中的当前项。
解决方法
您可以尝试以下方法:
<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>
,我不喜欢这样,但是如果您必须使用Html.XXXFor
1:在模型上创建一个名为CurrentAnswer的属性(键入Answer)
2:在循环中设置CurrentAnswer的答案
3:然后调用Html.XXXFor(a => a.CurrentAnswer)