2016-12-26 107 views
0

我正在使用MVC和Jquery数据表。 我只想传递我自己的参数作为类与jQuery数据表参数。 这里是我使用的代码,但它不工作,jquery datatable自定义对象参数

index.js

var options = {}; 
options.bProcessing = true; 
options.bServerSide = true; 
options.sAjaxSource = urlContent + 'Employee/GetAll'; 
options.bPaginate = true; 
options.sPaginationType = "full_numbers"; 
options.iDisplayLength = 10; 
options.bAutoWidth = true; 
options.aoColumns = cols; 
options.fnServerData = function (sSource, aoData, fnCallback) { 
    $.ajax({ 
     "dataType": 'json', 
     "type": "GET", 
     "url": sSource, 
     "data": aoData, 
     "success": function (data) { }, 
     "failure": function (data) { } 
    }); 
}; 

options.fnServerParams = function (aoData) { 

    aoData.push({ "name": "employeeModel", "value": { Name : "testing", Age:25} }); 
}; 

    var table = $('#' + tableId).DataTable(options); 

沐控制器,

public JsonResult GetReportData(JQueryDataTableParamViewModel param, EmployeeViewModel employeeModel) 
{ 
    return new List<Employee>(); //// Loads from Database 
} 

employeeModel总是空。我在哪里做错了。请帮帮我。

回答

0

我还没有使用这需要选项参数构造函数中完成,但我用其他的方式来做到这一点,这里是该代码:

$('#assets-data-table').DataTable({ 
        "serverSide": true, 
        "processing": true, 
        "ajax": { 
         "url": "@Url.Action("Get","Asset")", 
         "data": function (data) { 

          data.FacilitySite = $("#FacilitySite").val(); 
          data.Building = $("#Building").val(); 
          data.Manufacturer = $("#Manufacturer").val(); 
          data.Status = $("#Status").val(); 
         } 
        }, 
        "columns": [ 
         { "title": "Bar Code", "data": "BarCode", "searchable": true }, 
         { "title": "Manufacturer", "data": "Manufacturer", "searchable": true }, 
         { "title": "Model", "data": "ModelNumber", "searchable": true }, 
         { "title": "Building", "data": "Building", "searchable": true }, 
         { "title": "Room No", "data": "RoomNo" }, 
         { "title": "Quantity", "data": "Quantity" }, 
         { 
          "title": "Actions", 
          "data": "AssetID", 
          "searchable": false, 
          "sortable": false, 
          "render": function (data, type, full, meta) { 
           return '<a href="@Url.Action("Edit","Asset")?id=' + data + '" class="editAsset">Edit</a> | <a href="@Url.Action("Details","Asset")?id=' + data + '">Details</a> | <a href="@Url.Action("Delete","Asset")?id=' + data + '">Delete</a>'; 
          } 
         } 
        ], 
        "lengthMenu": [[10, 25, 50, 100], [10, 25, 50, 100]], 
        initComplete: function() { 
         var input = $('.dataTables_filter input').unbind(), 
          self = this.api(), 
          $searchButton = $('<button>') 
             .text('search') 
             .addClass("btn btn-default") 
             .css("margin-left", "10px") 
             .click(function() { 
              self.search(input.val()).draw(); 
             }) 

         $('.dataTables_filter').append($searchButton); 
        }, 
        "createdRow": function (row, data, index) { 
         if (data["Building"] == null) 
          return; 
         switch (data["Building"].toLowerCase()) { 
          case 'west': 
           $('td:not(:last-child)', row).css({ 
            'background': 'red', 
            'color': 'white' 
           }); 
           break; 
         } 
        } 
       }); 

我们在阿贾克斯指定自定义paramets呼叫时:

"data": function (data) { 

          data.FacilitySite = $("#FacilitySite").val(); 
          data.Building = $("#Building").val(); 
          data.Manufacturer = $("#Manufacturer").val(); 
          data.Status = $("#Status").val(); 
         } 

行动的样子:

public ActionResult Get([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel, AdvancedSearchViewModel searchViewModel) 
{ 


}