如何从多选(Kendo MultiSelect)向viewModel发送选定的值

时间:2018-03-28 06:23:49

标签: javascript jquery asp.net-mvc kendo-asp.net-mvc multi-select

我在Kendo MultiSelect项目中使用mvc5。所以我有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个viewModels:

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控制器获取所有公共房屋。接下来我选择了一些值:

那么,我如何在public ICollection<PublicHouseViewModel> PublicHouses { get; set; }的{​​{1}}属性中传递此选定值?

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用:

public int[] PublicHouses { get; set; }

而不是:

 public  ICollection<PublicHouseViewModel> PublicHouses { get; set; }

或者您可以在BookViewModel中创建一个仅用于发布的新字段。 当您从kendoMultiSelect发布值时,他只发布"dataValueField"。在您仅发布id后,您可以在POST操作中执行其余逻辑。

这取决于您实施POST行动的方式以及两个表格之间的关系:是1...N还是N....N