MVC4将DataTable请求参数绑定到动作过滤器

时间:2016-03-11 15:13:40

标签: asp.net-mvc datatables

我正在尝试为jquery-datatable实现服务器端分页和排序。 但问题是我无法将datatable发布的数据绑定到我的动作模型 做排序和过滤

这是jquery-datatable ajax request

发布的数据
draw:5
columns[0][data]:FirstName
columns[0][name]:FirstName
columns[0][searchable]:true
columns[0][orderable]:true
columns[0][search][value]:
columns[0][search][regex]:false
columns[1][data]:LastName
columns[1][name]:LastName
columns[1][searchable]:true
columns[1][orderable]:true
columns[1][search][value]:
columns[1][search][regex]:false
......
columns[n][data]:Position
columns[n][name]:Position
columns[n][searchable]:true
columns[n][orderable]:true
columns[n][search][value]:
columns[n][search][regex]:false
order[0][column]:1
order[0][dir]:desc
start:0
length:10
search[value]:
search[regex]:false

我的行动方法是:

 public JsonResult GetGridData(GridFilter filter)
{ ....}

and my model classes are

    public class GridFilter
    {
        public int draw { get; set; }

        public List<ColModel> columns { get; set; }
        public List<Order> order { get; set; }

        public int start {get;set;}

        public int length {get;set;}

        public search search { get; set; }
    }

    public class ColModel
    {
        public string data { get; set; }

        public string name { get; set; }

        public string searchable { get; set; }

        public string orderable { get; set; }
    }

    public class Order
    {
        public string dir { get; set; }
        public string column { get; set; }
    }

    public class search
    {
        public string value {get;set;}
        public string regex {get;set;}
    }

如何使用默认mvc模型绑定器正确绑定数据是一种自定义绑定。

由于

1 个答案:

答案 0 :(得分:1)

确保您的模型属性与定义的here.

具有相同的数据类型

此外,您的模型已经过了一个级别。它们作为单独的参数发送,因此您不需要GridFilter模型,它们应该像这样接收:

    [HttpPost]
    public JsonResult GetGridData(List<ColModel> columns, List<Order> order, Search search, int? start, int? length, int? draw)
    {

    }