在模型long?
中,我喜欢使用 Kendo MultiSelect 的字段。这种选择的主要原因是server-side filtering
。它不反映当前模型的值,也不向服务器发送任何值。通过检查流量,我确信它不会更新模型的值。
@(Html.Kendo().MultiSelectFor(x => x.theField)
.Name("msname")
.MaxSelectedItems(1)
.Placeholder("")
.HighlightFirst(true)
.DataValueField("Id")
.DataTextField("Text")
.AutoBind(true)
.DataSource(ds =>
ds.Read(" ", "API").ServerFiltering(true))
.Value(new long?[] { Model.theField})
)
我可以放置一个隐藏字段并更新其值或多选的更改,但应该有更好的解决方案。
我应该注意到这个多选是在一个编辑器模板中,并且被 Kendo Grid 在弹出编辑器中使用。
更新
使用nullable
类型时,您需要使用ValuePrimitive(true)
! 所以最终代码是:
@(Html.Kendo().MultiSelectFor(x => x.theField)
.MaxSelectedItems(1)
.Placeholder("")
.HighlightFirst(true)
.DataValueField("Id")
.DataTextField("Text")
.AutoBind(true)
.DataSource(ds =>
ds.Read(" ", "API").ServerFiltering(true))
.ValuePrimitive(true)
)