我正在尝试通过kendo ui网格将模型数据从表单发送到控制器。我还没有找到任何帮助。
这是我的网格代码,
enter@(Html.Kendo().Grid<LookupGridResults>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.FirstName).Width(225);
columns.Bound(p => p.LastName).Width(225);
columns.Bound(p => p.City).Width(225);
columns.Bound(p => p.County).Width(225);
columns.Bound(p => p.State).Width(225);
columns.Bound(p => p.Zip).Width(225);
})
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:550px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(50)
.ServerOperation(true)
.Read(read => read.Action("ReadLeads", "LeadsManagement"))
)
)
如果可能,我想尝试将此作为对控制器的ajx调用。
答案 0 :(得分:1)
您可以将grid.dataSource.read
方法与数据对象参数(http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#methods-read)一起使用:
var optionalData = { foo: 42, bar: "baz" };
dataSource.read(optionalData);
或者,如果您想要自定义操作请求,则有未记录的dataSource.success
方法:
$.ajax({
type: "POST",
url: '...',
data: {....},
success: function (data) {
//data is array of grid items to rebind
grid.dataSource.success(data);
}
});
<强>更新强>
从表单收集数据我使用的是jquery扩展程序serializeObject
(https://stackoverflow.com/a/1186309/5575536):
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
接下来的用法是:
var data = $('#form').serializeObject();
//or
var data = $('#container').find('input,select,textarea').serializeObject();