在模型中我有long?
字段,我喜欢使用Kendo MultiSelect。这个选择的主要原因是server-side filtering
。它不反映当前模型的值,也不会将任何值发送到服务器。通过检查流量,我相信它不会更新模型的价值。模型绑定失败,使用Kendo MultiSelect
@(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})
)
我可以把一个隐藏的领域,并更新其价值或multiselect的变化,但应该有一个更好的解决方案。
我应该注意到,这个多重选择是在一个编辑器模板中,由弹出编辑器中的Kendo Grid使用。
UPDATE
当使用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)
)
我无法理解你的问题,你可以做一个小样本项目,重现你目前的情况?也许它会启发我找到解决方案.. –
感谢您的努力Dion,问题是,如果模型的字段'theField'目前是'null',我无法改变它,这两个控件都不会更新它的值。但如果它已经有一些价值,我可以改变它,两个控件都会更新它。不幸的是,我无法提供样品。 – Akbari
1分钟请迪翁,我想我得到了问题,这可能是因为类型的差异,多选择的数据是不可空的。 – Akbari