Kendo调度程序-读取数据源-将字符串数组发布到Web API
本文关键字:Web API 数组 字符串 调度程序 读取 数据源 Kendo | 更新日期: 2023-09-27 18:00:30
我正在努力完成以下任务,通过POST请求获得用户的预约,因为我需要发布其他日历ID来获得其他用户的预约。POST请求被发送到Web API。端点被命中,但calendarId数组始终为空。
这是数据源定义:
dataSource: new kendo.data.SchedulerDataSource({
batch: true,
transport: {
read: {
url: "/api/MyCalendar/GetAppointments",
dataType: "json",
type: "POST"
},
parameterMap: function(data, type) {
if (type === "read") {
return JSON.stringify(data);
}
}
}
这是Web API实现:
[HttpPost]
public HttpResponseMessage GetAppointments(string[] calendarIds)
{
// calendarIds is always empty
这是请求发布的内容(textView)从fiddler:
{"calendarIds":["1c78e75f-9516-42cf-a439-271ee997abf1"]}
我不知道这里出了什么问题,谢谢你在这方面的帮助。
更新:
整个原始请求:
POST http://xxxxx/api/MyCalendar/GetAppointments HTTP/1.1
Host: ccmspatientmanager
Connection: keep-alive
Content-Length: 56
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://xxxxx
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://xxxxx/Home/MyCalendar
Accept-Encoding: gzip,deflate,sdch
Accept-Language: cs,en-GB;q=0.8,en;q=0.6,de-DE;q=0.4,de;q=0.2,sk;q=0.2
Cookie: ASP.NET_SessionId=flcab5ecct1zaopgqmpz0rhg; .ASPXAUTH=DAED17623F4B0E8F4AB0C3176EC0B73DD29A65650E93DB9664D52C9D23D34C52F1B312923B0A5F8A0D66DAF5C72864BF5827CC667D181DDE5EBC43C651D3C41FBFF315884DD74272E74E4A08D0D2380696B1C5B6
{"calendarIds":["1c78e75f-9516-42cf-a439-271ee997abf1"]}
您可以尝试使用[FromBody]属性注释WebAPI post方法
[HttpPost]
public HttpResponseMessage GetAppointments([FromBody]string[] calendarIds)
还要确保在请求正文中传递的是Array,而不是Object。您现在发送的{"calendarIds":["1c78e75f-9516-42cf-a39-271ee997abf1"]}是一个对象,而WebAPI方法接受数组
你可以试试:
parameterMap: function(data, type) {
if (type === "read") {
var values = data.calendarIds.split(','),
return JSON.stringify(values);
}
}