jQuery DataTable服务端列集合

3
我正在使用Asp.Net MVC,我只需要在服务器上获取列的集合,而不需要创建自定义模型绑定器。
如果我们查看Datatable文档,我们会看到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

Request.Form.AllKeys

我们拥有的参数 columns[i].name 看起来像 columns[i][name]。顺便说一下,Request.Form["columns[1][name]"] 返回 ClientAlias,所以它有正确的值但错误的名称。
也许有人知道为什么参数名称与官方文档不同,以及如何更改它。
我只看到了一个解决我的问题的方法
  • 自定义模型绑定器。
但是我想要的只是像文档中所说那样使用 Datatables。
有什么想法如何在服务器上获得 columns[i].name 而不是 columns[i][name] 吗?
1个回答

2
我用了一个未记录或很好隐藏的功能解决了我的问题。至少我在这里没找到它。
我所做的就是改变我的dataTable初始化脚本。
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
       }
   });

它还活着。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接