如何在 ASP.Net MVC 中捕获 jquery 数据表服务器端数据源参数

how to catch jquery datatable server side data source parameters in ASP.Net MVC

我在 ASP.Net MVC 应用程序中使用 jQuery Datatable and server side proccessing 作为数据源。 我需要在我的查询中应用搜索词,但我不知道如何捕捉它。

这是我的控制器的简短版本:

public JsonResult Index(POFilter m) {
   return Json(new {
      data = data,
      ...
   })
}

POFilter.cs

public class POFilter
{
    public int start { get; set; }
    public int length { get; set; }
    public int draw { get; set; }
    public List<DT_Order> order { get; set; }
    public string[] search { get; set; }

    public POFilter()
    {
        start = 0;
        length = 10;
        draw = 1;
    }
}

public class DT_Order
{
    public int column { get; set; }
    public string dir { get; set; }
}

但由于某种原因 search property 始终为空。你可以看到由 jquery datatable:

传递的参数
order[0][column]:0
order[0][dir]:desc
start:0
length:10
search[value]:my search term
search[regex]:false

如何从传递的参数中得到 my search term

看看这个项目,是朋友做的MVC / Jquery数据表实现。 我几乎在我所有的项目中都使用它

https://github.com/amoerie/generic-datatables

实施起来有点困难,但一旦到位,就很容易使用

我正在使用一个对象来保存搜索结果。而不是使用:

public string[] search { get; set; }

我使用:

public DataTableSearch Search { get; set; }

其中 DataTableSearch 定义为:

public class DataTableSearch
{
    public string Value { get; set; }
    public string Regex { get; set; }
}

如果这不能解决您的问题(如果您仍有问题),请告诉我。

使用datatables.mvc5 nuget包获取类型化模型绑定器:

public JsonResult GetData([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel)
{
    // requestModel.Start..
    // requestModel.Length..
    // requestModel.Columns..
}