4

我的视图模型中有一个可为空的布尔属性:

public class ViewModel
{
    [Required(ErrorMessage="Please select yes or no")]
    public bool? Completed { get; set; }
}

我希望此属性的表单控件是一对单选按钮,最初在页面加载时没有选择任何选项。这是因为我们希望用户有意识地单击一个选项或另一个(而不是复选框,它很容易被忽略并保留为默认值)。

布尔属性必须可以为空,否则在页面加载时已经检查了“否”选项,正如我上面提到的,这不是我们想要的。但是,在视图中使用以下代码:

<label>@Html.RadioButton("Completed", Model.Completed) YES</label>
<label>@Html.RadioButton("Completed", !Model.Completed) NO</label>

导致运行时错误,因为助手尝试绑定的模型属性为空。

我怎样才能达到这个最初未选中的状态?

4

1 回答 1

6

试试这样:

<label>@Html.RadioButton("Completed", "true") YES</label>
<label>@Html.RadioButton("Completed", "false") NO</label>

但是由于您已经有一个视图模型,所以使用强类型版本的助手会更好:

<label>@Html.RadioButtonFor(x => x.Completed, "true") YES</label>
<label>@Html.RadioButtonFor(x => x.Completed, "false") NO</label>
于 2013-06-21T13:09:05.593 回答