2013-05-14 49 views
6

更新:剑道多选:从绑定的模式选择的值不会被初始化

要缩短问题:

如何使用剃刀的SelectList绑定到剑道UI多选工具?

原题:

在ASP.NET MVC 4应用程序,我试图让剑道复选工作。我将Multiselect小部件绑定到我的模型/视图模型,但是init值未被使用。选择和完美的作品。

型号:

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

public class Student 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

控制器:

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); 

查看:标准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> 

查看:剑道多选不工作 - >复选是空的(没有预先选择),但我可以选择价值完美

<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> 

我做错了吗?感谢您的任何建议!

回答

5

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

@(Html.Kendo().MultiSelect() 
    .Name("SelectedStudents") 
    .BindTo(new SelectList(ViewBag.Students, "Id", "Name")) 
    .Value(Model.SelectedStudents) 
) 
+0

它显示它不包含多重选择的定义...为什么? – Neel 2013-05-31 05:04:38

+0

也许你正在使用旧版的Kendo UI ..? – Lopo 2013-08-13 14:38:56

+0

我有类似的问题,我使用Ajax绑定和我已经设置MaxSelectedItem为1的差异。而在我的模型中,等效字段是长类型,而不是IEnumberable或集合。对我有什么想法? – Akbari 2015-07-11 05:47:52