C# 可为Null的对象的值必须为ASP.NET MVC 5复选框

C# 可为Null的对象的值必须为ASP.NET MVC 5复选框,c#,asp.net-mvc,checkbox,C#,Asp.net Mvc,Checkbox,嗨,我有一个复选框 @Html.CheckBoxFor(model => model.VisitRequested.Value, new {onClick = "showHide();"}) 如果未单击复选框,它将抛出异常(如上)。如果复选框保持未选中状态,我希望该值为0或false 型号代码为: [DisplayName("Request a Visit")] public Nullable<bool> VisitRequested { get; set; } [Disp

嗨,我有一个复选框

@Html.CheckBoxFor(model => model.VisitRequested.Value, new {onClick = "showHide();"})
如果未单击复选框,它将抛出异常(如上)。如果复选框保持未选中状态,我希望该值为0或false

型号代码为:

[DisplayName("Request a Visit")]
public Nullable<bool> VisitRequested { get; set; }
[DisplayName(“请求访问”)]
公共可空访问请求{get;set;}

是,这是因为
model.HasValue
为false。添加

 if (model.VisitRequested.HasValue)
    @Html.CheckBoxFor(model => model.VisitRequested.Value, new {onClick = "showHide();"});
 else
    //somethings wrong, not sure what you want to do
基本上,这表示对象为空。在文档中可以找到

例外情况:
无效操作例外 条件:
HasValue属性为false


这就是您所遇到的。

可为null的
属性的
在值为null时抛出一个
无效操作异常
(实际上是当
HasValue==false时)。尝试:

只需使用
model.VisitRequested
并最终将其包装在
中,如果

@if (Model.VisitRequested.HasValue)
{
   @Html.CheckBoxFor(model => model.VisitRequested, new {onClick = "showHide();"}) 
}

模型在当前上下文中不存在。我必须为代码使用@{}符号吗?@ASPCoder1450我不这么认为,我猜是其他一些小语法错误造成的。哦,是的,我刚看到。我来编辑。我从
model
访问
HasValue
,这时还有一层间接寻址。错误消息不直观:| System.Nullable不包含GetValueOfDefaultAn的定义System.Web.Mvc.dll中发生类型为“System.InvalidOperationException”的异常,但未在用户代码中处理其他信息:模板只能用于字段访问、属性访问、一维数组索引、,或者单参数自定义索引器表达式。我使用了GetValueOrDefault(false)您可以显示视图中的完整代码行吗?@Html.CheckBoxFor(model=>model.VisitRequested.GetValueOrDefault(false),新的{onClick=“showHide();”})可能重复的
@if (Model.VisitRequested.HasValue)
{
   @Html.CheckBoxFor(model => model.VisitRequested, new {onClick = "showHide();"}) 
}