单选按钮自动选中问题

7
我使用RadioButtonFor如下:
@Html.RadioButtonFor(m => m.Content, Model.Content, new { @name = "rb", @class = "answer-radio", @id = "answer-" + Model.Counter,@checked = "false" })
    @Html.Label(Model.Content, new { @for = "answer-" + Model.Counter })
    @Html.HiddenFor(m => m.Content)

但是这个单选框已经被"选中"了,怎么才能将其禁用?

2
模型中的属性具有什么值?如果它是 true,那么我相信它会覆盖 @checked = "false" - ChrisF
@ChrisF,它只是文本。checked="false" 在属性中,但没有效果。 - bguler
1
你能否更新问题,包括模型类? - Rafay
2个回答

5

你确定需要单选框吗?看起来你可能需要复选框...

对于一个布尔值,我会这样设置两个单选按钮:

@Html.RadioButtonFor(m => m.Content, true, new { @id = "rb1" })
@Html.RadioButtonFor(m => m.Content, false, new { @id = "rb2" })

html助手将确定要选中哪一个。如果Model.Content属于另一种类型,则使用不同的值来设置radiobuttons,MVC仍然会确定要选中哪一个。

编辑:

事实上,这甚至比那更简单。如果您使用Html助手RadioButtonFor方法,则如果找到与Model属性匹配的值,它将检查radiobutton。因此,您已将RadioButton指定为始终具有与Model属性相同的值,因此它将始终被选中(并且这是将在表单中返回的值)

因此,如果您想将布尔值默认设置为false,并仅在选中时返回true,则可以只执行以下操作:

@Html.RadioButtonFor(m => m.Content, true, new { @id = "rb1" })

其中Content最初被设为false。

您也可以使用其他值类型。例如,如果Content是一个字符串,最初设置为null,那么只有在单选按钮被选中时,这将回传"RadioButtonChecked"。否则返回null:

@Html.RadioButtonFor(m => m.Content, "RadioButtonChecked", new { @id = "rb1" })

0

在属性列表中添加“checked”将使其无论如何都被选中。我会确保您模型中的值为null或false。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接