Kendo Dropdownlist为可以为空的bool而不是设置空值

时间:2014-12-10 22:18:03

标签: kendo-ui nullable dropdownlistfor

@model bool?
@(Html.Kendo().DropDownListFor(m=>m).BindTo(new List<SelectListItem>() {
                                          new SelectListItem() {
                                          Text = "--Select--",
                                          Value = null
                                      },
                                      new SelectListItem() {
                                          Text = "Yes",
                                          Value = "true"
                                      },
                                      new SelectListItem() {
                                          Text = "No",
                                          Value = "false",
                                      }

        }).DataTextField("Text").DataValueField("Value").HtmlAttributes(new { data_value_primitive = "true" }))

一切都有一个问题:当我将值设置为true或false时,我无法将其设置为null。因此,如果该字段的值曾经是&#34; true&#34;我把它设置为&#34; null&#34;或(&#34; - 选择 - &#34;)并单击提交,将值设置为false。这是在我的模型中设置字段的方式

[DisplayName("Autostart Load")]
public bool? AutoStartLoad { get; set; }

为什么会这样?

2 个答案:

答案 0 :(得分:2)

尝试OptionLabel属性,它适用于我

@Html.Kendo().DropDownListFor(model => model.SomeProperty).OptionLabel("Choose value...").BindTo(new List<SelectListItem>()
            {
                new SelectListItem() { Text = "Yes", Value = "True" },
                new SelectListItem() { Text = "No", Value = "False" },
            });

public bool? SomeProperty { get; set; }

同时将Value的{​​{1}}和true设置为以大写字母开头,因为false会将值返回为bool.ToString()"True"

答案 1 :(得分:0)

尝试一下:

@Html.Kendo().DropDownListFor(model => model.SomeProperty).BindTo(new List<SelectListItem>()
        {
    
            new SelectListItem() { Text = "Choose value...", Value = "null" },
            new SelectListItem() { Text = "Yes", Value = "True" },
            new SelectListItem() { Text = "No", Value = "False" },
        });

这不是剑道控件特有的问题。自定义三态选项按钮组也存在类似问题。除非您将其作为字符串发布,否则不会发布Null。

在原始代码中,只需在引号中添加null。那应该解决它。