2014-07-16 15 views
3

我正在使用Asp.Net MVC,所有我需要的是獲取服務器上的列的集合,而無需創建自定義模型聯編程序。JQuery數據表服務器端列集合

如果我們看看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,所以它有正確的值,但名稱錯誤。

所以,也許有人知道爲什麼參數名稱不同於官方文檔,我該如何改變它。

我只看到一個desigions我的問題

  • 自定義模型粘合劑。

但是,所有我希望它只是使用數據表作爲docs says

任何想法如何獲取服務器columns[i].namecolumns[i][name]

回答

1

我解決了我的問題,使用無證或好的隱藏功能。至少我沒有發現它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 
     } 
    }); 

而且它是活的。