【发布时间】:2014-09-10 00:49:48
【问题描述】:
我正在使用 Kendo UI 的 DataSource 将排序信息发送到我的 ServiceStack 服务。我知道这个has been addressed 如果您使用的是POST,但我想坚持RESTful 设计,所以请求动词需要是GET。我正在使用这个 sn-p 进行测试:
var dataSource = new kendo.data.DataSource({
serverSorting: true,
sort: [{ field: "ProductName", dir: "desc" },
{ field: "Category", dir: "asc"}],
serverPaging: true,
page: 2,
pageSize: 5,
transport: {
read: {
url: "/products",
dataType: "json",
contentType: "application/json",
dataType: "jsonp"
},
parameterMap: function (data, type) {
//return kendo.stringify(data);
//return JSON.stringify(data);
//return $.param(data, true);
//data.sort = kendo.stringify(data.sort);
return data;
}
}
});
dataSource.fetch(function () {
console.log(dataSource.view());
});
排序参数变成一个锯齿状数组,如:
sort[0][field]: ProductName
sort[0][dir]: desc
sort[1][field]: Category
sort[1][dir]: asc
我的请求 DTO 是:
public class SortTerm
{
public string field { get; set; }
public string dir { get; set; }
}
public class KendoQuery
{
public List<SortTerm> Sort { get; set; }
public int Skip { get; set; }
public int Take { get; set; }
public int Page { get; set; }
public int PageSize { get; set; }
}
所有简单的参数都被反序列化了,但是我到底如何才能在客户端或服务器端转换 Sort 属性以使其正确填充?
请注意,我在 parameterMap 函数中尝试了各种序列化技术,但我完全被难住了。
编辑
所以这一切都归结为:当 jQuery 仔细地将我的请求重新排列成锯齿状数组时,如何通过 $.get() 将对象数组传递给 ServiceStack 服务?这有点像请求过滤器,但我不得不想象它之前已经解决了 **GET** 请求。
【问题讨论】:
标签: c# jquery json kendo-ui servicestack