Asp.net mvc 表单提交时在剑道UI列表视图中创建列表

Asp.net mvc 表单提交时在剑道UI列表视图中创建列表,asp.net-mvc,forms,listview,kendo-ui,asp.net-mvc-5,Asp.net Mvc,Forms,Listview,Kendo Ui,Asp.net Mvc 5,想象一下下面的视图模型,其中我有一个空的模型和表单要填写 Public Class McGuffinViewModel { public int FieldA {get; set;} public string FieldB {get; set;} public Ienumerable<Listitem> Items {get; set;} } 因此,我转到Create Mcguffin页面,并在表单中包含以下部分内容: @mod

想象一下下面的视图模型,其中我有一个空的模型和表单要填写

 Public Class McGuffinViewModel
  {
       public int FieldA {get; set;}
       public string FieldB {get; set;}
       public Ienumerable<Listitem> Items {get; set;}
  }
因此,我转到Create Mcguffin页面,并在表单中包含以下部分内容:

@model IEnumerable<Listitem>

//Item Template Defined here

@(Html.Kendo().ListView<SidetracksViewModel>(Model)
                      .Name("listView")
                      .TagName("div")
                      .ClientTemplateId("templateA")
                      .BindTo(Model)
                      .DataSource(ds => ds.Model(m => m.Id("Id"))
                          .Read(read => read.Action("Read", "McGuffin"))
                          .Create(create => create.Action("Create", "McGuffin"))
                          .Update(update => update.Action("Update", "McGuffin"))
                          .Destroy(destroy => destroy.Action("Remove", "McGuffin"))
                                )
                      .Editable()
)
 //Style Here

每当我提交表单时,添加到listview的任何和所有listitems都不会与常规模型状态相关联。Listview计数始终为0。如何使此列表与模型实际绑定和更新?如果不是这样,BindTo还能为我做什么?

我遇到了一个类似的问题,通过绑定表单的提交事件,创建一个隐藏的列表框,并将剑道数据项移动到列表框,解决了这个问题

var data = $("#listView").data("kendoListView").dataSource.data();
                            var selectOptions = "<select name='Items' style='display:none' multiple='multiple' >";
                            for (var i = 0 ; i < data.length; i++) {
                                selectOptions += "<option value='" + data[i].Id + "'>" + data[i].Id + "</option>"
                            }
                            selectOptions += "</select>";

                            $('form').append(selectOptions); 
                            $("select[name='Items'] option").attr("selected", "selected");

我从Telerik找到了这个解决方案:

JS Bin:

$("form").submit(function(e){
  var form = $(this);

  var list = $("#listView").data("kendoListView");  
  var selected = list.select();
  for(var i = 0; i< selected.length; i++){
    var dataItem = list.dataSource.getByUid($(selected[i]).attr("data-uid"));
    var newFormElement = $("<input name='products["+i+"]' type='hidden'>").val(dataItem.ProductName);
    form.append(newFormElement); 
  }
});