【问题标题】:Nullable Object Must Have a Value ASP.NET MVC 5 Checkbox For可空对象必须有一个值 ASP.NET MVC 5 复选框
【发布时间】:2014-03-05 17:52:24
【问题描述】:

嗨,我有一个复选框

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

如果未单击复选框,则会引发异常(如上)。如果复选框保持未选中状态,我希望该值为 0 或 false。

型号代码为:

[DisplayName("Request a Visit")]
public Nullable<bool> VisitRequested { get; set; }

【问题讨论】:

标签: c# asp.net-mvc checkbox


【解决方案1】:

Nullable&lt;T&gt;Value 属性在值为空时(实际上是在HasValue == false 时)抛出InvalidOperationException。试试:

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

只需使用model.VisitRequested 并最终将其包裹在if 中:

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

【讨论】:

  • System.Nullable 不包含 GetValueOfDefault 的定义
  • System.Web.Mvc.dll 中发生了“System.InvalidOperationException”类型的异常,但未在用户代码中处理附加信息:模板只能用于字段访问、属性访问、单维度数组索引,或单参数自定义索引器表达式。
  • 我用过GetValueOrDefault(false)
  • 你能在你的视图中显示完整的代码行吗?
  • @Html.CheckBoxFor(model => model.VisitRequested.GetValueOrDefault(false), new { onClick = "showHide();" })
【解决方案2】:

是的,因为model.HasValue 是假的。添加;

 if (model.VisitRequested.HasValue)
    @Html.CheckBoxFor(model => model.VisitRequested.Value, new {onClick = "showHide();"});
 else
    //somethings wrong, not sure what you want to do

基本上这表明该对象为空。在您可以找到的文档中;

例外:
无效操作异常 条件:
HasValue 属性为假

这是你遇到的。

【讨论】:

  • 模型在当前上下文中不存在。我必须在代码中使用 @{} 符号吗?
  • @ASPCoder1450 我不这么认为,我猜还有其他一些小的语法错误导致它。哦,是的,我刚看到。我会编辑。当还有一层间接时,我正在从model 访问HasValue。错误信息不直观:|
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-26
  • 1970-01-01
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多