9

アップデート:

質問を短くするには:

Razorを使用してSelectListをKendo UI MultiSelectウィジェットにバインドする方法は?

元の質問:

ASP.NET MVC 4 アプリケーションで、Kendo Multiselect を機能させようとしています。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>

私が間違っていることは何ですか?アドバイスをありがとう!

4

1 に答える 1

10

MultiSelectFor() の代わりに MultiSelect() を使用し、事前選択を整数のリストではなく文字列のリストとして渡します。

@(Html.Kendo().MultiSelect()
    .Name("SelectedStudents")
    .BindTo(new SelectList(ViewBag.Students, "Id", "Name"))
    .Value(Model.SelectedStudents)
)
于 2013-05-27T15:38:21.517 に答える