JQuery数据表服务器端列集合

时间:2014-07-16 10:01:23

标签: c# asp.net-mvc-4 jquery-datatables

我使用的是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

Request.Form.AllKeys

我们拥有的参数columns[i].name看起来像columns[i][name]。顺便说一句,Request.Form["columns[1][name]"]返回ClientAlias,因此它具有正确的值,但名称错误。

所以也许有人知道为什么参数名称与官方文档不同,我怎么能改变它。

我只看到一个问题的设计

  • 自定义模型绑定器。

但我想要的只是将数据表用作docs says

有关如何登录服务器columns[i].name而不是columns[i][name]的任何想法?

1 个答案:

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

它还活着。