Я использую Kendo MultiSelect в своем проекте mvc5. Итак, у меня есть представление с множественным выбором:
@model Library.ViewModels.Models.BookViewModel
@{
ViewBag.Title = "Edit";
}
<script>
$(document).ready(function () {
$("#multiselect").kendoMultiSelect({
placeholder: "--Select Public Houses--",
dataTextField: "PublicHouseName",
dataValueField: "PublicHouseId",
autoBind: true,
dataSource: {
transport: {
read: {
dataType: "json",
url: "/book/getallpublichouses"
}
}
}
});
$("#multiselect").getKendoMultiSelect().value([/* there must be a string array of ID's of pre-selected values here*/]);
});
</script>
Моя модель BookViewModel выглядит так:
public class BookViewModel
{
public int BookId { get; set; }
[Required(ErrorMessage = "This field is Required")]
[StringLength(15, ErrorMessage = "Must be under 15 characters")]
public string Name { get; set; }
public string AuthorName { get; set; }
[Required(ErrorMessage = "This field is Required")]
[Range(1, 2019, ErrorMessage = "Must be between 1 and 2019")]
public int YearOfPublishing { get; set; }
public List<int> PubHouses { get; set; }
public ICollection<PublicHouseViewModel> PublicHouses { get; set; }
}
Свойство public List<int> PubHouses { get; set; } содержит список идентификаторов, которые необходимо предварительно выбрать в kendo MultiSelect.
Итак, как я могу передать этот список int в свойстве BookViewModel.PubHouses как массив строк в kendo MultiSelect?
извините, я новичок в javascript
<script> var values = @Html.Raw(Json.Encode(Model.PubHouses)); $(document).ready(function () { $("#multiselect").kendoMultiSelect({ placeholder: "--Select Public Houses--", /*----------------------------------------------*/ } }); $("#multiselect").getKendoMultiSelect().value(values); }); </script> // Могу я сделать вот так ??
Вы пробовали?
Да, но это не работает. А может я что-то не так сделал.
Просмотрите результат values в консоли - это будет массив идентификаторов, которые вы сказали, что хотите



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете преобразовать вашу собственность в массив javascript с помощью
var values = @Html.Raw(Json.Encode(Model.PubHouses)). Но почему бы просто не привязать к себе модель в первую очередь с помощью@Html.ListBoxFor(m => m.PubHouses, ...)? И почему вы делаете вызов ajax для получения параметров, а не в первую очередь передаете его в представление?