【问题标题】:Kendo Checkbox is not passing notmapped value to controller剑道复选框没有将未映射的值传递给控制器
【发布时间】:2020-07-20 22:50:09
【问题描述】:

我在使用剑道复选框时遇到问题。它没有设置我检查的值并发送到控制器。它在 javascript 模型中(在自定义保存事件中)显示该字段为空。它还将控制器中的模型视为 null。

我如何声明该字段:

[NotMapped]
    public bool? ValueBool { get; set; }

控件在局部视图中,调用方式如下:

@Html.Kendo().CheckBoxFor(m=> m.ValueBool).Checked(Convert.ToBoolean(Model?.Value ?? "false"))

这显示了具有正确值的控件。

但是,当我单击“保存”时,它没有传递值。有什么想法吗?

【问题讨论】:

  • 如果您查看开发工具中的网络选项卡,ValueBool 值是否会发布到控制器(并且只是不绑定)?如果您手动单击复选框以切换复选框,那么它会发布吗?如果是这样,您需要在其上触发更改事件。
  • 手动点击它什么也没做。它已加载设置为 true 并且取消单击它没有任何效果。它仍然通过null。网络标签显示该字段为“null”。

标签: checkbox kendo-ui


【解决方案1】:

ValueBool 可以为空,因此,如果您要选择“三态”复选框,这意味着如果用户不触摸该字段,它会保持为空,但如果他们选中它,它是真的,取消选中它,它是false,您需要查看以下内容:https://stackoverflow.com/a/17822452/493557

但是,由于您要将可为空的 bool 转换为 True 或 False 值,因此您可能不是在寻找该三态选项,您可以将 ValueBool 更改为不可为空,或者执行类似以下:

在您的模型中添加一个布尔属性,该属性返回您的基础可空布尔值的不可空表示:

public bool ValueBoolNotNullable //Obviously rename this :)
{
    get
    {
        return ValueBool.HasValue ? ValueBool.Value : false;
    }
    set
    {
        ValueBoolNotNullable = value
    }
}

并更新您的视图 CheckBoxFor 以使用该新属性:

@Html.Kendo().CheckBoxFor(m=> m.ValueBoolNotNullable)

【讨论】:

  • 我们正在做的是我们有一个“自定义数据”页面,该页面将数据类型存储在一个字段中,并将值的字符串表示形式存储在“值”字段中。我正在尝试将其转换为剑道。
  • 我也花了一段时间,但我明白为什么你可能认为我在做三态。我们实际上有一个自定义编辑器模板,其中包含三态切换。我从来没有能够让剑道想要保存更改的值。我最终用一个带有 True 和 False 文本选项的下拉列表替换了这个控件。我这样做是为了在没有大量 javascript 的情况下轻松地在 kendo 中对其进行更改事件。当下拉列表更改时,它只是将值复制到值控件的数据中并触发它,以便模型注意到。
猜你喜欢
  • 2016-01-31
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多