RadioButton会自动检查

bgu*_*ler 7 c# radio-button asp.net-mvc-4

我像这样使用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)
Run Code Online (Sandbox Code Playgroud)

但是这个无线电按钮被"检查"了.我怎么能禁用它?

Sim*_*n C 5

你确定要一个单选按钮吗?好像你可能在Checkbox之后......

对于布尔值,我会设置2个radiobuttons,如下所示:

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

html帮助器将找出要检查的那个.如果Model.Content是另一种类型,则对radiobuttons使用不同的值,MVC仍将确定要检查哪一个.

编辑:

实际上,它甚至更简单.如果您使用Html帮助器RadioButtonFor方法,它将检查radiobutton是否找到与Model属性匹配的值.因此,您已将RadioButton指定为始终具有与Model属性相同的值,因此将始终检查它(这将是将在表单中回发的值)

所以,如果你想要一个bool默认为false,并且只有在检查时才返回true,你可以这样做:

@Html.RadioButtonFor(m => m.Content, true, new { @id = "rb1" })
Run Code Online (Sandbox Code Playgroud)

其中Content最初设置为false.

您也可以使用其他值类型.例如,如果Content是一个字符串,最初设置为null,"RadioButtonChecked"只有在选中单选按钮时才会回发.否则为空:

@Html.RadioButtonFor(m => m.Content, "RadioButtonChecked", new { @id = "rb1" })
Run Code Online (Sandbox Code Playgroud)