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);
}
});