@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; }
为什么会这样?
答案 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。那应该解决它。