我有以下场景:我有一个kendo.dataSource,它通过读取请求填充到WebApi控制器。除了读取,我发送了几个参数,然后我在我的控制器中使用它来做一些服务器逻辑。我能够通过传输函数的parameterMap属性发送尽可能多的简单参数。直到现在它是一个简单的获取请求。但是现在我需要将额外的json对象作为参数发送到控制器。我读到我必须将Get请求转换为Post并将Json放到请求的主体上,但我不知道该怎么做。
到目前为止我的代码:
var gridDataSource = new kendo.data.DataSource({
type: 'odata-v4',
transport: {
read: {
url: wave.alarmsAndEvents.api('api/alarmsAndEventsSearch/post'),
type: "POST",
data: {
SearchModel: JSON.stringify(vm.searchModel)
},
contentType: 'application/json; charset=utf-8',
},
parameterMap: function (data, operation) {
if (operation === "read") {
data.startDate = kendo.toString(vm.selectedTimeInterval.start, "G");
data.endDate = kendo.toString(vm.selectedTimeInterval.end, "G");
data.alarmsToDisplay = vm.maxRecords;
}
return kendo.stringify(data);
}
},
pageSize: vm.maxRecords,
error: function (e) {
alert(e.xhr.responseText);
}
});
SearchModel
是我要发送给JSon
的内容。其余的是简单的DateTime
和int
参数。
我的控制器:
[HttpPost]
public IQueryable<AlarmsSearchViewModel> Post(DateTime startDate, DateTime endDate, int alarmsToDisplay, [FromBody]JToken jsonbody)
{
....
return something;
}
我最终得到Not Found 404
,但我很确定我搞砸了参数。从网络窗口我可以看到根本没有发送json对象。任何帮助将不胜感激!