我们正在使用 fullcalendar.io,我们希望从我们的 api 控制器获取一个事件。
我们的控制者
[Route("api/Bookings")]
public class BookingApiController
{
// GET
[HttpGet]
public string Get()
{
var returnJson = new
{
events = new[]
{
new {title = "bro", start = "2018-05-06"},
new {title = "bro2", start = "2018-05-05"}
}
};
return JsonConvert.SerializeObject(returnJson);
}
}
我们的脚本文件
$(function () {
$('#calendar').fullCalendar({
//weekends : false
dayClick: function (date) {
window.location.href = "/Booking/Booking?selectedDate=" + date.format();
},
eventSources: [
{
url: '/api/Booking',
color: 'yellow', // an option!
textColor: 'black' // an option!
}
]
})
});
但是,javascript 脚本永远不会正确获取事件。我们可以看到它接收 JSON,但没有将事件正确添加到日历中。
最终返回的 JSON 是什么样的(如果您在浏览器工具中观察您的 ajax 请求,您可以看到它(?
fullCalendar 需要一个平面的事件数组,但看起来你返回的是一个包裹在另一个对象中的事件,所以 fullCalendar 不会看到它们。它只是假设没有要返回的事件。
我怀疑您收到的是这样的东西:
{
events: [
//...array of events
]
}
而你只需要这个:
[
//...array of events
]
这是未经测试的,但我很确定它会修复它:
[HttpGet]
public string Get()
{
var events = new[]
{
new {title = "bro", start = "2018-05-06"},
new {title = "bro2", start = "2018-05-05"}
};
return JsonConvert.SerializeObject(events);
}
请注意,此版本中缺少外部"returnJson"对象。
有关事件源系统(您正在使用的系统(的说明,请参阅 https://fullcalendar.io/docs/events-json-feed,https://fullcalendar.io/docs/events-array 此处有关形成有效事件列表所需的对象格式的示例。