我有
public class Version
{
public bool LeftChecked {get; set;}
public bool RightChecked {get; set;}
//some other properties
}
List<Version> versions = ...
现在在视图中我想要的表格包含与versions
列表项和两列单选按钮相对应的行:一列中的一列而另一列中的另一列(这样每列中只有一个按钮可以被选中)。棘手的部分是如何将LeftChecked
和RightChecked
属性映射到这些单选按钮,以便正确绑定?
修改 我按照答案中的建议尝试了,但是html生成的方式如下:
<tr>
<td>
<input id="Versions_0__LeftChecked" name="Versions[0].LeftChecked" type="radio" value="1" />
</td>
<td>
<input id="Versions_0__RightChecked" name="Versions[0].RightChecked" type="radio" value="1" />
</td>
</tr>
<tr>
<td>
<input id="Versions_1__LeftChecked" name="Versions[1].LeftChecked" type="radio" value="1" />
</td>
<td>
<input id="Versions_1__RightChecked" name="Versions[1].RightChecked" type="radio" value="1" />
</td>
</tr>
哪个不行,因为同一列name
属性应该相同。此外它似乎没有绑定到我的C#类。好吧,javascript方法快速而且很好地完成了工作......
答案 0 :(得分:4)
您应该能够遍历视图中的版本集合,并使用Html.CheckboxFor帮助程序来创建复选框。如果您使用下面的语法,则在发布表单时将获得正确的绑定。
...other form fields
@for (int i = 0; i < Model.Versions.Count; i++)
{
<tr>
<td>
<label>Left</label>
@Html.CheckBoxFor(x => x.Versions[i].LeftChecked)
</td>
<td>
<label>Right</label>
@Html.CheckBoxFor(x => x.Versions[i].RightChecked)
</td>
... other properties
</tr>
}
有一篇很好的文章解释了基础知识 http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx