2013-05-14 50 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