解析以JQuery样式传递的查询字符串过滤/排序

时间:2015-08-26 13:26:33

标签: c# asp.net-web-api2 kendo-datasource

有没有人知道C#中的标准库(或模型绑定器)来解析JQuery样式的序列化过滤器(和排序),就像从Kendo DataSource传递的那样?

所以要将像这样的查询字符串解析为带有过滤器和排序对象的强类型数组:

label3

我尝试过搜索但不幸的是,我似乎大部分时间都遇到了不完整的实现或JavaScript样本。

更新:我没有意识到这种格式已经标准支持,直到@Lali指出这是标准的体形式序列化。

我现在通过创建一些类并使用它作为Web API操作的参数来解决它,它只是神奇地起作用:

sort[0][field]=status.name&sort[0][dir]=desc&filter[logic]=and&filter[filters][0][field]=status.name&filter[filters][0][operator]=eq&filter[filters][0][value]=Sold

1 个答案:

答案 0 :(得分:0)

我没有意识到这种格式已经被标准支持,直到@Lali指出这是标准的正文形式序列化。

我现在通过创建一些类并使用它作为Web API操作的参数来解决它,它只是神奇地起作用:

public async Task<IHttpActionResult> Get([FromUri] ListSelectionOptionsWithFilter options)
{
   //query something
}

public class ListSelectionOptionsWithFilter
{
    public int? Skip { get; set; }
    public int? Take { get; set; }
    public List<ListSortOption> Sort { get; set; }
    public ListFilterOptions Filter { get; set; }
}

public class ListFilterOptions
{
    public string Logic { get; set; }
    public List<ListFilterOption> Filters { get; set; }
}

public class ListFilterOption
{
    public string Field { get; set; }
    public string Operator { get; set; }
    public string Value { get; set; }
}

public class ListSortOption
{
    public string Field { get; set; }
    public string Dir { get; set; }
}