解析以 JQuery 样式传递的查询字符串 filter/sorting
Parse query string filter/sorting passed in JQuery style
有人知道 C# 中的标准库(或模型联编程序)来解析 JQuery 样式的序列化过滤器(和排序),例如从 Kendo 数据源传递的那个吗?
因此,要将这样的查询字符串解析为具有过滤器和排序对象的强类型数组:
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
我尝试过搜索,但不幸的是,我似乎大多 运行 不完整的实现或 JavaScript 样本。
更新:直到@Lali 指出这是标准的正文形式序列化,我才意识到这种格式已经得到标准支持。
我现在通过创建一些 类 并将其用作网络 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; }
}
直到@Lali 指出这是标准的body 表单序列化,我才意识到这种格式已经得到标准支持。
我现在通过创建一些 类 并将其用作网络 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; }
}
有人知道 C# 中的标准库(或模型联编程序)来解析 JQuery 样式的序列化过滤器(和排序),例如从 Kendo 数据源传递的那个吗?
因此,要将这样的查询字符串解析为具有过滤器和排序对象的强类型数组:
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
我尝试过搜索,但不幸的是,我似乎大多 运行 不完整的实现或 JavaScript 样本。
更新:直到@Lali 指出这是标准的正文形式序列化,我才意识到这种格式已经得到标准支持。
我现在通过创建一些 类 并将其用作网络 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; }
}
直到@Lali 指出这是标准的body 表单序列化,我才意识到这种格式已经得到标准支持。
我现在通过创建一些 类 并将其用作网络 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; }
}