2013-05-14 22 views
6

Cập nhật:Kendo Multiselect: giá trị được chọn từ mô hình binded không khởi

Để rút ngắn câu hỏi:

Làm thế nào để ràng buộc một SelectList đến một Kendo UI Multiselect Widget sử dụng Razor?

gốc câu hỏi:

Trong một ASP.NET MVC 4 ứng dụng, tôi đang cố gắng để có được những Kendo Multiselect làm việc. Tôi đang ràng buộc widget Multiselect vào model/viewmodel của tôi nhưng các giá trị init không được sử dụng. Chọn và vì vậy hoạt động hoàn hảo.

mẫu:

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

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

Bộ điều khiển:

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

Xem: Chuẩn HTML hoạt động hoàn hảo !!

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

Xem: Kendo Multiselect không hoạt động -> Multiselect trống (không có preselections), nhưng tôi có thể chọn các giá trị hoàn hảo

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

Những gì tôi đang làm sai? Cảm ơn lời khuyên nào!

Trả lời

5

Sử dụng MultiSelect() thay vì MultiSelectFor() và vượt qua việc chọn trước làm danh sách chuỗi thay vì danh sách số nguyên.

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

nó đang hiển thị nó không chứa defination of multiselect ... tại sao là tht ?? – Neel

+0

Có thể bạn đang sử dụng phiên bản Kendo cũ hơn ..? – Lopo

+0

Tôi có vấn đề tương tự với sự khác biệt này mà tôi đang sử dụng Ajax Binding và tôi đã đặt MaxSelectedItem thành 1. Và trong Mô hình của tôi trường tương đương là loại dài, không phải là một IEnumberable hoặc một bộ sưu tập. Bất kỳ ý tưởng cho tôi? – Akbari

Các vấn đề liên quan