繁体   English   中英

Web Api服务器端处理和数据表参数

[英]Web Api Server Side Processing and DataTables parameters

我正在尝试创建一个表示数据表提供给我的Web api调用的值的对象,然后将其路由到另一个实际返回值的api(将数据表废话与api接口分开)。

在对数据表Wiki进行了一些研究之后,我最终定义了以下对象:

public class DataTableParameters
{
    public int draw { get; set; }
    public int start { get; set; }
    public int length { get; set; }
    public order[] order { get; set; }
    public column[] columns { get; set; }
}

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

public class column
{
    public string data { get; set; }
    public string name { get; set; }
    public bool searchable { get; set; }
    public bool orderable { get; set; }
    public search search { get; set; }
}

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

但是,当我尝试将它们用作DataTables api控制器的参数时,结果为null:

    public DataTableResult Get(DataTableParameters parameters) //parameters is null!
    {
         return new DataTableResult();
    }

据我了解,模型绑定应该是读取结果并将其应用于我的对象。 这是从前端对api的示例调用:

Key Value
Request GET /MVC/api/DataTables?action=Get&draw=1&columns%5B0%5D%5Bdata%5D=0&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true&columns%5B0%5D%5Borderable%5D=true&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B1%5D%5Bdata%5D=1&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B2%5D%5Bdata%5D=2&columns%5B2%5D%5Bname%5D=&columns%5B2%5D%5Bsearchable%5D=true&columns%5B2%5D%5Borderable%5D=true&columns%5B2%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B2%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B3%5D%5Bdata%5D=3&columns%5B3%5D%5Bname%5D=&columns%5B3%5D%5Bsearchable%5D=true&columns%5B3%5D%5Borderable%5D=true&columns%5B3%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B3%5D%5Bsearch%5D%5Bregex%5D=false&order%5B0%5D%5Bcolumn%5D=0&order%5B0%5D%5Bdir%5D=asc&start=0&length=10&search%5Bvalue%5D=&search%5Bregex%5D=false&_=1440437669357 HTTP/1.1

为什么我的参数对象为null,如何解决?

编辑:我也尝试这样做:

 public DataTableResult Get(int draw, int start, int length, column[] columns, order[] order)
    {
        return new DataTableResult();
    }

但是我收到“无法将多个参数('列'和'订单')绑定到请求的内容。”

UGH不到10分钟后,我需要在参数上使用[FromUri]属性。

 public DataTableResult Get([FromUri]DataTableParameters parameters)
 {
      return new DataTableResult();
 }

您还可以定义自定义DataTableModelBinder,它可以将Datatables HTTP请求参数自动绑定到您的类。 本文是解释如何实现这种模型绑定程序的文章。

http://www.ezzylearning.com/tutorial/using-jquery-datatables-with-asp-net-web-api

本文介绍了通过Web API使用DataTables的基础知识

http://www.ezzylearning.com/tutorial/jquery-datatables-paging,-sorting-and-searching-with-asp-net-web-api

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM