2013-05-14 10 views
6

-Update initialisiert:Kendo Mehrfachauswahl: Ausgewählte Werte von Binded Modell nicht

Um die Frage zu verkürzen:

Wie ein Select zu einem Kendo UI Multiselect-Widget mit Razor binden?

Original Frage:

In einer ASP.NET MVC 4 Anwendung, Ich versuche, die Kendo Mehrfachauswahl zum Laufen zu bringen. Ich binde das Multiselect-Widget an mein Modell/Viewmodel, aber die Init-Werte werden nicht verwendet. Auswählen und so funktioniert perfekt. Modell

:

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

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

Controller:

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

Ansicht: Standard-HTML funktioniert perfekt !!

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

Ausblick: Kendo Mehrfachauswahl nicht funktioniert -> Mehrfachauswahl ist leer (keine Vorwahl), aber ich kann Werte auswählen perfekt

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

Was mache ich falsch? Danke für jeden Hinweis!

Antwort

5

Verwenden Sie MultiSelect() anstelle von MultiSelectFor() und übergeben Sie die Vorauswahl als eine Liste von Strings anstelle einer Liste von ganzen Zahlen.

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

es zeigt, dass es keine Definition von Multiselect enthält ... warum ist das ?? – Neel

+0

Wahrscheinlich verwenden Sie eine ältere Version von Kendo UI ..? – Lopo

+0

Ich habe ähnliches Problem mit diesem Unterschied, dass ich Ajax Binding verwende und ich habe das MaxSelectedItem auf 1 gesetzt. Und in meinem Modell ist das äquivalente Feld Typ von long, nicht ein IEnumberable oder eine Sammlung. Irgendeine Idee für mich? – Akbari