Kendo UI Multiselect帖子数据未来,列表计数= 0

时间:2014-04-08 18:12:36

标签: asp.net-mvc

我无法在控制器中获得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;在模型中设置;}

1 个答案:

答案 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模型。

我不确定这是否是最佳方式,但它对我们有用。