我需要构建服务器模型,使用默认的ASP.NET MVC模型绑定器从folowwing表单数据中解析:
page:1
pageSize:10
filter[filters][0][field]:ApplicantName
filter[filters][0][operator]:eq
filter[filters][0][value]:e
filter[filters][1][field]:ApplicantName
filter[filters][1][operator]:eq
filter[filters][1][value]:d
filter[filters][2][field]:FamilySize
filter[filters][2][operator]:eq
filter[filters][2][value]:2
filter[filters][3][logic]:or
filter[filters][3][filters][0][field]:WaitList
filter[filters][3][filters][0][operator]:eq
filter[filters][3][filters][0][value]:3
filter[filters][3][filters][1][field]:WaitList
filter[filters][3][filters][1][operator]:doesnotcontain
filter[filters][3][filters][1][value]:3
page
和pageSize
没关系但是对于过滤器不能这样做。尝试以下方法:
public class DataSourceRequest
{
public int Page { get; set; }
public int PageSize { get; set; }
public DataSourceFilter Filter { get; set; }
}
public class DataSourceFilter
{
public IEnumerable<DataSourceFilter> Filters { get; set; }
public string Logic { get; set; }
public string Field { get; set; }
public string Operator { get; set; }
public string Value { get; set; }
}
但没有成功。根Filter
不为空,但没有任何嵌套数据。
答案 0 :(得分:1)
我需要构建要从folowwing表单数据中解析的服务器模型 使用默认的ASP.NET MVC模型绑定器:
你做不到。默认模型绑定器不理解也不支持此语法。请阅读following article
以更好地了解默认模型绑定器使用的支持的有线格式。
然后修复您的请求以符合预期的格式:
page 1
pageSize 10
filter.filters[0].field ApplicantName
filter.filters[0].operator eq
filter.filters[0].value e
filter.filters[1].field ApplicantName
filter.filters[1].operator eq
filter.filters[1].value d
filter.filters[2].field FamilySize
filter.filters[2].operator eq
filter.filters[2].value 2
filter.filters[3].logic or
filter.filters[3].filters[0].field WaitList
filter.filters[3].filters[0].operator eq
filter.filters[3].filters[0].value 3
filter.filters[3].filters[1].field WaitList
filter.filters[3].filters[1].operator doesnotcontain
filter.filters[3].filters[1].value 3
如果由于某种原因您无法修改请求格式,则必须编写自定义模型绑定器并手动解析值。
答案 1 :(得分:0)
我建议使用这种方法来处理过滤器列表:
这将按照模型绑定器可理解的格式发布到服务器。
如果您删除并添加过滤器,它也会对您有所帮助......因为索引将成为&#34; hole&#34;在secuence中(默认模型绑定器不支持)...并且这种方法在不依赖于整数安全性的方面更加健壮。