Form-Data数组未被反序列化以请求dto

时间:2015-10-23 16:44:25

标签: json kendo-ui servicestack servicestack-text

我试图为KendoUI Grid做过滤功能。

Kendo将数据作为表单数据发送:

take:20
skip:0
page:1
pageSize:20
filter[filters][0][operator]:eq
filter[filters][0][value]:abc
filter[filters][0][field]:No
filter[logic]:and

我尝试使用dto反序列化它:

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

public class FilteringInfo
{
    public string Logic { get; set; }
    public FilteringRule[] Filters { get; set; }
}

public class FilteredQuery
{
    FilteringInfo Filter { get; set; }
    //...
}

但反序列化失败:

'filter[filters][0][operator]' does not exist on type 'FilteredQuery'
'filter[filters][0][value]' does not exist on type 'FilteredQuery'
'filter[filters][0][field]' does not exist on type 'FilteredQuery'
'filter[logic]' does not exist on type 'FilteredQuery'

如何使这项工作?当我手动发送json而不是form-data时,它可以工作。

kendo可以发送json吗?设置contentType:" application / json"在数据源中没有帮助。 Kendo仍然以表单数据的形式发送数据,servicestack会抛出错误:"无法绑定请求"。

1 个答案:

答案 0 :(得分:1)

ServiceStack允许sending complex objects via QueryStrings使用轻量级JSV语法,你的例子看起来像:

?filter={filters:[{operator:eq,value:abc,field:no}],{logic:and}}

但是由于Kendo不太可能支持这种语法,如果它支持JSON,你最好发送JSON,这自然会映射到你的DTO。