【问题标题】:CheckBoxFor - Cannot convert lambda expression to intended delegate typeCheckBoxFor - 无法将 lambda 表达式转换为预期的委托类型
【发布时间】:2018-06-08 06:30:34
【问题描述】:

我正在尝试在我的视图中加入一个复选框。 这是我的观点:

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

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

我的模型中有以下内容:

    public bool ? Chart { get; set; }

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

我还尝试了以下操作:

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

但我得到:可空对象必须有一个值。

【问题讨论】:

  • link 的可能重复项

标签: c# asp.net-mvc


【解决方案1】:

您不能使用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

【讨论】:

    猜你喜欢
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多