2015-10-23 29 views
0

我正在嘗試爲KendoUI Grid進行過濾功能。Form-Data數組未被反序列化以請求dto

劍道發送數據的表格數據:

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而不是表單數據時,它可以工作。

劍道能發送json嗎?在數據源中設置contentType:「application/json」不起作用。 Kendo仍然以表單數據的形式發送數據,servicestack會拋出錯誤:「無法綁定請求」。

+0

http://docs.telerik.com/kendo-ui/aspnet-mvc/helpers/grid/custom-binding爲什麼不使用DataSourceRequest –

回答

1

ServiceStack允許sending complex objects via QueryStrings使用輕量級JSV語法,從你的例子看起來是這樣的:

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

但由於劍道是不太可能支持這種語法,你會更好發送JSON,如果支持的話,其自然會映射到您的DTO。