CheckBoxFor - 无法将lambda表达式转换为预期的委托类型

时间:2018-06-06 21:07:33

标签: c# asp.net-mvc

我正在尝试在我的视图中添加一个复选框。 以下是我在视图中的内容:

    @Html.CheckBoxFor(model => model.Chart)

注意,我得到以下内容:无法将lambda表达式转换为预期的委托类型,因为块中的某些返回类型不能隐式转换为委托返回类型。

我的模型中有以下内容:

    public bool ? Chart { get; set; }

注意Chart是一个可以为空的布尔值。

我也尝试过以下操作:

    @Html.CheckBoxFor(model => model.Chart.Value)

但是我得到:Nullable对象必须有一个值。

1 个答案:

答案 0 :(得分:0)

您无法使用CheckBoxFor()绑定到bool?(可为空)。该方法接受bool作为表达式。

复选框有2个状态(on / of或true/false),bool?有3个状态(true/false/null)。

请注意,方法的签名是

public static MvcHtmlString CheckBoxFor<TModel>(
    this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, bool>> expression)

要绑定到bool?,请使用@Html.EditorFor()生成包含3个值的下拉列表。

或者,如果您想要一个复选框,请使用视图模型并将属性设为bool