2013-05-14 15 views
6

Aggiornamento:Kendo Multiselect: quelli selezionati dal modello binded non vengono inizializzate

Per accorciare la domanda:

Come associare un SelectList ad un Kendo UI multipla Widget utilizzando rasoio?

domanda originale:

In ASP.NET MVC 4 Applicazione, sto cercando di ottenere il Kendo Multiselect lavoro. Collego il widget Multiselect al mio modello/viewmodel ma i valori init non vengono utilizzati. Selezionare e funziona perfettamente.

Modello:

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

Vista: standard HTML funziona perfettamente !!

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

Vista: Kendo Multiselezione non funziona -> selezione multipla è vuota (nessun preselezioni), ma posso selezionare i valori perfettamente

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

Quello che sto facendo male? Grazie per qualsiasi consiglio!

risposta

5

Utilizzare MultiSelect() anziché MultiSelectFor() e passare la preselezione come un elenco di stringhe anziché un elenco di numeri interi.

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

sta mostrando che non contiene la definizione di multiselect ... perché è? – Neel

+0

Probabilmente stai usando una versione precedente di Kendo UI ..? – Lopo

+0

Ho un problema simile a questa differenza che sto usando Ajax Binding e ho impostato MaxSelectedItem su 1. E nel mio modello il campo equivalente è di tipo long, non di IEnumberable o di una raccolta. Qualche idea per me? – Akbari