我的模型有3个元素的列表,每个元素都有一个字符串(AnswerBody)和一个bool(正确)。 当我提交表格时,我完全得到了价值。 问题是,当选择多个单选按钮时,它们都保持选中状态。 它应该不是这样的。在选择另一个时,它应该取消选择先前的选择。 我有一个星期坚持这个技巧,我不知道如何解决。 任何帮助,我将不胜感激。 这是我的观点的一部分:
<table>
<tr>
<td>
@Html.TextAreaFor(c => c.AnsLst[0].AnswerBody)
</td>
<td>
@Html.RadioButtonFor(c => c.AnsLst[0].Correct, true)
</td>
</tr>
<tr>
<td>
@Html.TextAreaFor(c => c.AnsLst[1].AnswerBody)
</td>
<td>
@Html.RadioButtonFor(c => c.AnsLst[1].Correct, true)
</td>
</tr>
<tr>
<td>
@Html.TextAreaFor(c => c.AnsLst[2].AnswerBody)
</td>
<td>
@Html.RadioButtonFor(c => c.AnsLst[2].Correct, true)
</td>
</tr>
</table>
答案 0 :(得分:2)
如果您使用的单选按钮组一次只能选择一个值,则应将它们绑定到视图模型上的单个属性,该属性将保留所选值而不是集合:
<table>
<tr>
<td>
@Html.TextAreaFor(c => c.AnsLst[0].AnswerBody)
</td>
<td>
@Html.RadioButtonFor(c => c.Answer, "value 1")
</td>
</tr>
<tr>
<td>
@Html.TextAreaFor(c => c.AnsLst[1].AnswerBody)
</td>
<td>
@Html.RadioButtonFor(c => c.Answer, "value 2")
</td>
</tr>
<tr>
<td>
@Html.TextAreaFor(c => c.AnsLst[2].AnswerBody)
</td>
<td>
@Html.RadioButtonFor(c => c.Answer, "value 3")
</td>
</tr>
</table>
现在,由于3个单选按钮绑定到视图模型(Answer
)上的相同属性,因此在提交表单时,此属性将获取所选答案的值。将要发送的值是作为第二个参数传递给RadioButton助手的值。
所以基本上你的视图模型上会有以下属性来存储答案:
public string Answer { get; set; }
在示例中,我为答案设置了一些任意值,但您可以使用例如答案的ID,以便您可以识别它:
@Html.RadioButtonFor(c => c.Answer, c.AnsLst[0].AnswerId)
@Html.RadioButtonFor(c => c.Answer, c.AnsLst[1].AnswerId)
@Html.RadioButtonFor(c => c.Answer, c.AnsLst[2].AnswerId)