ASP.NET MVC Yes/No Radio Buttons with Strongly Bound Model MVC
Solution 1:
If you're using MVC 3 and Razor you can also use the following:
@Html.RadioButtonFor(model => model.blah, true) Yes
@Html.RadioButtonFor(model => model.blah, false) No
Solution 2:
The second parameter is selected, so use the ! to select the no value when the boolean is false.
<%= Html.RadioButton("blah", !Model.blah) %> Yes
<%= Html.RadioButton("blah", Model.blah) %> No
Solution 3:
Here is a more complete example using a fieldset
for accessibility reasons and specifying the first button as the default. Without a fieldset
, what the radio buttons are for as a whole can not be programmatically determined.
Model
public class MyModel
{
public bool IsMarried { get; set; }
}
View
<fieldset>
<legend>Married</legend>
@Html.RadioButtonFor(e => e.IsMarried, true, new { id = "married-true" })
@Html.Label("married-true", "Yes")
@Html.RadioButtonFor(e => e.IsMarried, false, new { id = "married-false" })
@Html.Label("married-false", "No")
</fieldset>
You can add a @checked
argument to the anonymous object to set the radio button as the default:
new { id = "married-true", @checked = 'checked' }
Note that you can bind to a string by replacing true
and false
with the string values.
Solution 4:
Building slightly off Ben's answer, I added attributes for the ID so I could use labels.
<%: Html.Label("isBlahYes", "Yes")%><%= Html.RadioButtonFor(model => model.blah, true, new { @id = "isBlahYes" })%>
<%: Html.Label("isBlahNo", "No")%><%= Html.RadioButtonFor(model => model.blah, false, new { @id = "isBlahNo" })%>
I hope this helps.