我想提交包含以下内容的表格:
如下图所示:
我的观点代码是:
@model ProjectName.ReferenceViewModel
@using (Html.BeginForm("MainDocumentSave", "Document", FormMethod.Post, new { @class="MainForm"}))
{
<input type="text" name="ParentReferenceID" id="ParentReferenceID" value="@Model.ID"/>
<input type="text" name="ParentReferenceName" id="ParentReferenceName" value="@Model.Name"/>
@(Html.Kendo().Grid<Invoice.Models.ViewModels.ReferenceViewModel>()
.Name("Reference")
//.TableHtmlAttributes(new { style = "height:160px; " })
.Columns(columns =>
{
columns.Bound(p => p.ReferenceID).Hidden(true).ClientTemplate("#= ReferenceID#" + "<input type='hidden' class='ReferenceID' name='Reference[#= index(data)#].ReferenceID' value='#=ReferenceID#' />");
columns.Bound(p => p.ReferenceName).HeaderHtmlAttributes(new { title = "Reference Name" }).Title("Reference").Width(10).ClientTemplate("#= ReferenceName#" + "<input type='hidden' class='ReferenceName'name='Reference[#= index(data)#].ReferenceName' value='#=ReferenceName#' />");
columns.Bound(p => p.ReferenceDescription).HeaderHtmlAttributes(new { title = "Reference Description" }).Title("Description").Width(10).ClientTemplate("#= ReferenceDescription#" + "<input type='hidden' class='ReferenceDescription' value='#=ReferenceDescription#' />");
//columns.Bound(p => p.DefaultReferenceValue).Title("Value").Width(15).EditorTemplateName("ReferenceValidValue").HtmlAttributes(new { @class = "DefaultValue" }).ClientTemplate("#= DefaultReferenceValue#" + "<input type='hidden' class='DefaultReferenceValue' value='#=DefaultReferenceValue#' />");
})
.Editable(ed => ed.Mode(GridEditMode.InCell))
.Navigatable()
.HtmlAttributes(new { style="height:190px;"})
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
)
)
}
这里的问题是,在提交表单时,我只能发布编辑器的值,而不能发布Kendo Grid的值。
如何发送所有值?
答案 0 :(得分:2)
答案 1 :(得分:2)
如何在this代码库文章中演示和解释如何提交Kendo Grid模型以及表单。
基本上这个想法是,对于每一列,您必须指定一个模板,该模板具有保存该项的值的隐藏输入。
答案 2 :(得分:1)
你不能访问Model而不是找到Kendo网格吗?
尝试在控制器中获取Invoice.Models.ViewModels.ReferenceViewModel,因为您已绑定到Kendo Grid。
答案 3 :(得分:1)
发布集合(例如表格中的行)时,输入的每个名称都需要在名称后附加数组元素。
以下是呈现两个人阵列的呈现HTML:
<form action="/Document/MainDocumentSave">
<table>
<tr>
<input name="person.PersonID[0]" type="hidden">1</input>
<input name="person.FirstName[0]" type="text">Bill</input>
</tr>
<tr>
<input name="person.PersonID[1]" type="hidden">2</input>
<input name="person.FirstName[1]" type="text">Bob</input>
</tr>
</table>
</form>
数组括号中的值必须是唯一的。集合中最简单的“唯一值”是数字:[0],[1],[2]等。
我提到这个的唯一原因是因为当从表中添加/删除行时,你可以得到像[0],[1],[5],[6]等那样的空白。你不需要做额外的逻辑,以确保值是连续的。