Mar*_*ell 3 asp.net html-helper model-binding razor asp.net-mvc-3
我的视图模型中有一个可以为null的布尔属性:
public class ViewModel
{
[Required(ErrorMessage="Please select yes or no")]
public bool? Completed { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望此属性的表单控件是一对单选按钮,在页面加载时最初没有选择任何选项.这是因为我们希望用户有意识地单击一个选项或另一个选项(而不是复选框,这很容易被忽略并保留为默认值).
布尔属性需要是可空的,因为否则在页面加载时已经检查了'NO'选项,正如我上面提到的那样,这不是我们想要的.但是,在视图中使用以下代码:
<label>@Html.RadioButton("Completed", Model.Completed) YES</label>
<label>@Html.RadioButton("Completed", !Model.Completed) NO</label>
Run Code Online (Sandbox Code Playgroud)
导致运行时错误,因为帮助程序尝试绑定到的模型属性为null.
我怎样才能实现这个最初未被选中的状态?
试试这样:
<label>@Html.RadioButton("Completed", "true") YES</label>
<label>@Html.RadioButton("Completed", "false") NO</label>
Run Code Online (Sandbox Code Playgroud)
但是既然你已经有了一个视图模型,那么使用强类型的helper版本要好得多:
<label>@Html.RadioButtonFor(x => x.Completed, "true") YES</label>
<label>@Html.RadioButtonFor(x => x.Completed, "false") NO</label>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5390 次 |
| 最近记录: |