Kendo Multiselect:来自绑定模型的选定值未初始化

Lop*_*opo 6 asp.net-mvc multi-select kendo-ui kendo-asp.net-mvc

更新:

缩短问题:

如何使用Razor将SelectList绑定到Kendo UI MultiSelect小部件?

原始问题:

在ASP.NET MVC 4应用程序中,我试图让Kendo Multiselect工作.我将Multiselect小部件绑定到我的模型/ viewmodel但是没有使用init值.选择等完美无缺.

模型:

public class Data
{
    public IEnumerable<int> SelectedStudents{ get; set; }
}

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

List<Student> students = new List<Student>();
students.Add(new Baumaterial { Id = 1, Name = "Francis" });
students.Add(new Baumaterial { Id = 2, Name = "Jorge" });
students.Add(new Baumaterial { Id = 3, Name = "Drew" });
students.Add(new Baumaterial { Id = 4, Name = "Juan" });

ViewBag.Students= new SelectList(students, "Id", "Name");
Data data = new Data { SelectedStudents = new List<int>{2, 4} };

return PartialView(data);
Run Code Online (Sandbox Code Playgroud)

视图:标准HTML完美运行!!

<div class="form-label">
    @Html.LabelFor(model => model.SelectedStudents)
</div>
<div class="form-field large">
    @Html.ListBoxFor(model => model.SelectedStudents, (SelectList)ViewBag.Students)
</div>
<div class="form-message">
    @Html.ValidationMessageFor(model => model.SelectedStudents)
</div>
Run Code Online (Sandbox Code Playgroud)

查看:Kendo Multiselect不工作 - > Multiselect为空(无预选),但我可以完美地选择值

<div class="form-label">
    @Html.LabelFor(model => model.SelectedStudents)
</div>
<div class="form-field large">
    @(Html.Kendo().MultiSelectFor(model => model.SelectedStudents)
        .BindTo((SelectList)ViewBag.Students)
    )
</div>
<div class="form-message">
    @Html.ValidationMessageFor(model => model.SelectedStudents)
</div>
Run Code Online (Sandbox Code Playgroud)

我做错了什么?谢谢你的建议!

Lop*_*opo 9

使用MultiSelect()而不是MultiSelectFor()并将预选作为字符串列表而不是整数列表传递.

@(Html.Kendo().MultiSelect()
    .Name("SelectedStudents")
    .BindTo(new SelectList(ViewBag.Students, "Id", "Name"))
    .Value(Model.SelectedStudents)
)
Run Code Online (Sandbox Code Playgroud)