由于某些原因我有单选按钮,即使检查了第一个按钮,也总是在表单页面上显示最后一个按钮。为什么?我该如何解决这个问题?
@Html.RadioButtonFor(model => model.IsSatisFied, Satisfaction.Not, new { @checked = "true" })
@Html.RadioButtonFor(model => model.IsSatisFied, Satisfaction.Maybe, new { @checked = "false" })
@Html.RadioButtonFor(model => model.IsSatisFied, Satisfaction.Yes, new { @checked = "false" })
答案 0 :(得分:2)
不要设置checked
属性。 @checked = "true"
和@checked = "false"
(以及checked
或checked="checked"
或checked="anything"
)都设置了checked
属性。在读取DOM时,检查第一个,然后检查第二个,最后检查最后一个。
如果propery的值为IsSatisFied
为Satisfaction.Maybe
,则会选择第二个单选按钮(这就是模型绑定的工作原理)
答案 1 :(得分:0)
您正在使用格式错误的HTML。将某些内容标记为已检查的正确方法是
{ @checked = "checked" }
并且根本不包括未经检查的单选按钮的checked属性。
答案 2 :(得分:0)
如果出现以下任何现象,如果元素的检查状态在发生后为真,则同一单选按钮组中所有其他元素的检查状态必须设置为false :< / p>
- 元素的检查状态设置为true(无论出于何种原因)。
- 设置,更改或删除元素的名称属性。
- 元素的表单所有者更改。
因此,当在页面上解析HTML时,如果多个无线电是checked
,那么将始终选择最后一个。因此,您只想通过设置checked="checked"
:
@Html.RadioButtonFor(
model => model.IsSatisFied,
Satisfaction.Not,
new { @checked = "checked" })
@Html.RadioButtonFor(model => model.IsSatisFied, Satisfaction.Maybe)
@Html.RadioButtonFor(model => model.IsSatisFied, Satisfaction.Yes)