【发布时间】:2018-03-28 06:23:48
【问题描述】:
我在我的mvc5 项目中使用Kendo MultiSelect。所以我对multiselect有一个看法:
@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"
}
}
}
});
});
</script>
我有 2 个视图模型:
public class BookViewModel
{
public int BookId { get; set; }
public string Name { get; set; }
public string AuthorName { get; set; }
public int YearOfPublishing { get; set; }
public ICollection<PublicHouseViewModel> PublicHouses { get; set; }
}
public class PublicHouseViewModel
{
public int PublicHouseId { get; set; }
public string PublicHouseName { get; set; }
public string Country { get; set; }
public ICollection<BookViewModel> Books { get; set; }
}
在我的Kendo MultiSelect 中,以 JSON 格式从 Book 控制器获取所有公共房屋。接下来我选择了一些值:
那么,我怎样才能在BookViewModel 的public ICollection<PublicHouseViewModel> PublicHouses { get; set; } 属性中传递这个选定的值?
【问题讨论】:
-
使用
@Html.ListBoxFor(m => m.PubHouses, new SelectList(Model.PublicHouses, "PublicHouseId", "PublicHouseName"), "--Select Public Houses--")创建您的列表框,然后脚本变成$("#PubHouses").kendoMultiSelect();- 不需要不必要的ajax 调用。 (尽管您的视图模型应该包含IEnumerable<SelectListItem> PubHouses属性,而不是ICollection<PublicHouseViewModel> PubHouses) -
我需要将我选择的值保存在多选中,例如 BookViewModel 中的 PublicHouseViewModel 列表
-
我向您展示的代码将正确绑定到您的模型 - 即在 POST 方法中,
PubHouses将包含所选选项的值!而且您无法取回PublicHouseViewModel的列表 -<select multiple>回发一组简单值 - 所选选项的值,而不是复杂对象的集合。 -
确保输入的名称与 VM BookViewModel 相同以便良好绑定,我看不到 html 和控制器,这是绑定问题,没有剑道或仅 VM
标签: javascript jquery asp.net-mvc kendo-asp.net-mvc multi-select