我使用的是Asp.Net MVC,我只需要它就可以在服务器上获取列集,而无需创建自定义模型绑定器。
如果我们查看Datatable docs,我们会看到columns[i].name
参数。
所以我创建了模型:
public class DtSentParameters
{
public int Draw { get; set; }
public int Start { get; set; }
public int Length { get; set; }
public IList<DtColumn> Columns { get; set; } //We are talking about this collection
}
DtColumn
public class DtColumn
{
public string Name { get; set; }
public string Data { get; set; }
}
控制器
public JsonResult GetSales(DtSentParameters data)
{
//here placed some logic, but it's not important for us.
return Json(data);
}
Datatable JS
dataTable({
serverSide: true,
ajax: {
"url": url,
"type": "POST"
},
processing: true,
columns: [
{ data: "Date", name: "Date" },
{ data: "ClientAlias", name: "ClientAlias" }
],
scrollCollapse: true,
paging: true,
jQueryUI: false
});
一切正常,我得到了我的数据,我可以使用分页。所以我试图添加排序,这是一个问题。我的Columns.Count
等于2,但名称和数据都是空的。
我查看了Request.Form.AllKeys
我们拥有的参数columns[i].name
看起来像columns[i][name]
。顺便说一句,Request.Form["columns[1][name]"]
返回ClientAlias,因此它具有正确的值,但名称错误。
所以也许有人知道为什么参数名称与官方文档不同,我怎么能改变它。
我只看到一个问题的设计
但我想要的只是将数据表用作docs says
有关如何登录服务器columns[i].name
而不是columns[i][name]
的任何想法?
答案 0 :(得分:2)
我使用无证或隐藏的功能解决了我的问题。至少我没有找到它HERE
我所做的一切都改变了我的dataTable init脚本
dataTable({
serverSide: true,
ajax: {
url: url,
type: "POST",
contentType: 'application/json; charset=utf-8', //set contentType,
data: function(d) {
return JSON.stringify(d);} //stringify object by myself
}
});
它还活着。