Использование нескольких Html.RadioButtonFor (m => m.Foo, "true"), по-видимому, генерирует недопустимый HTML, поскольку он генерирует элементы управления с одинаковыми идентификаторами:
<input **id="Foo"** ... type="radio" value="True">
<input **id="Foo"** ... type="radio" value="False">
Я решил это, установив переключатели прямо в html:
<input type="radio" name="Foo" value="true" id="Foo_True"
<%:Html.WriteCheckedIfTrue(Model.Foo.HasValue && Model.Foo.Value)%>/>
<label for="Foo_True">Yes</label><br/>
<input type="radio" name="Foo" value="false" id="Foo_False"
<%:Html.WriteCheckedIfTrue(Model.Foo.HasValue && !Model.Foo.Value)%>/>
<label for="Foo_False">No</label><br/>
<input type="radio" name="Foo" value="" id="Foo_Null"
<%:Html.WriteCheckedIfTrue(!Model.Foo.HasValue)%>/>
<label for="Foo_Null">Don't Care</label>
убедитесь, что назвали переключатели в соответствии с используемой моделью представления, например: Model.Filter.HasImage названо: Filter.HasImage для работы с привязкой модели
«html helper» выглядит так:
public static MvcHtmlString WriteCheckedIfTrue(this HtmlHelper htmlHelper,
bool validation)
{
if(validation)
return new MvcHtmlString("checked=\"checked\"");
return new MvcHtmlString(string.Empty);
}