Я работаю в ASP.NET MVC и пытаюсь создать страницу для создания и редактирования определенной модели представления, ProjectVM
. Часть, с которой у меня возникли проблемы, заключается в использовании мультиселекта кендо для заполнения списка в ProjectVM
. Список относится к другому типу модели, Staff
. Вот модель просмотра...
public class ProjectVM{
[Key]
public int ID { get; set; }
... //more items
public List<Staff> Staff { get; set; }
}
Я пробовал множество различных вариантов этого, например, создание Staff
IEnumerable или массива. Вот страница редактора...
@model Site.Models.ProjectVM
@using (Ajax.BeginForm("Save", Model, new AjaxOptions() {HttpMethod = "post" })){
...
@(Html.Kendo().MultiSelectFor(M => m.Staff)
.BindTo(new SelectList((System.Collection.IEnumerable)ViewData["Staff"], "ID", "FullName"))
.Value(Model.Staff)
Как вы можете догадаться, при загрузке страницы я сохраняю все Staff
элементов в ViewData. Вышеупомянутое вообще не отправляло никакой информации из мультиселекта в контроллер, а в полученной модели представления утверждалось, что размер списка Staff
равен 0, несмотря на то, что я выбрал. Вместо этого я попытался избавиться от формы и использовать вызов Ajax POST...
function save(){
$.ajax({
url: "Save",
type: "POST",
dataType: "json",
contentType: "application/json",
data: JSON.stringify({
ID: @Model.ID,
...
Staff: $("#Staff").data("kendoMultiSelect").dataItems(),
})
})
}
Это принесло небольшое улучшение, так как список, полученный контроллером, теперь показывал правильный размер. Однако каждая запись была заполнена пустой информацией. Заголовок моего кода контроллера...
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Save(ProjectVM vm){
... //vm has never been correct
}
Любые предложения будут ценны. Все, что я исследовал, либо не соответствовало моему сценарию, либо не работало. Благодарю вас!
<select>
к набору сложных объектов (<select multiple>
отправляет только массив простых значений) - свойство, к которому нужно привязать, должно бытьpublic IEnumerable<int> Staff { get; set; }
- person   schedule 15.10.2016