我无法在控制器中获得Kendo UI Multiselect的价值。它给出了我的列表长度为0. MultiSelect为:
@(Html.Kendo().MultiSelectFor(model => model.Technicians)
.Name("Technicians")
.Placeholder("Select Technician(s)")
.DataTextField("Name")
.DataValueField("ID")
.Filter(FilterType.Contains)
.AutoBind(true)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetTechnicians", "Project");
})
.ServerFiltering(false);
})
.BindTo(Model.Technicians)
)
技术人员是:公共列表技术人员{get;在模型中设置;}
答案 0 :(得分:1)
我也遇到了这个问题。
我们最终在viewmodel中创建了IEnumerable<int>
个ID来存储该值。
所以,在我们的实例中
public IEnumerable<PersonLookupViewModel> TaggedPersons { get; set; }
(这是我真正想要的ID列表 - 包含first / last / id)
public IEnumerable<int> PeopleToTag { get; set; }
(这是视图模型的IEnumerable Int,仅用于将int发布到控制器)
我的观点如下:
<div class="editor-field">
@Html.LabelFor(model => model.taggedPersons)
@Html.ListBoxFor(model => model.PeopleToTag,
new SelectList(Model.CommitteeMembers, "PersonId", "FullName"))
</div>
和JS连线
$("#PeopleToTag").kendoMultiSelect({ "dataTextField": "FullName", "dataValueField": "PersonId", "placeholder": "Tag or Untag Persons to Action Item" });
因此将其切换到ListBoxFor(model =&gt; model.PeopleToTag),这是我的viewmodel中的Ienumerable字段,只是为了能够获取控制器中的数据。然后我使用了automapper来创建我实际需要的Person模型。
我不确定这是否是最佳方式,但它对我们有用。