【问题标题】:Issue loading events Fullcalendar.io问题加载事件 Fullcalendar.io
【发布时间】:2018-10-21 20:36:19
【问题描述】:

我们正在使用 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);

    }
}

我们的 javascript 文件

$(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,但没有将事件正确添加到日历中。

【问题讨论】:

  • 您的 URL 错误(控制器中的 Booking 与 Bookings),只是拼写错误?
  • 你说的从来没有正确获得事件是什么意思?
  • Evk 是的,这是一个错字。
  • DavidG 我们可以在 Network 选项卡中看到它获取 JSON 请求。但是,事件不会添加到日历中。这有意义吗?

标签: javascript asp.net json asp.net-web-api fullcalendar


【解决方案1】:

最终返回的 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 了解形成有效事件列表所需的对象格式示例。

【讨论】:

  • @Combii 请记住尽可能将答案标记为已接受。此外,由于您使用的是 Web API,因此值得注意的是,如果您为事件数据创建一个强类型类,您可以直接从 API 方法返回该类型的对象数组,Web API 会自动将它们序列化为 JSON ,而不是您手动执行。
猜你喜欢
  • 2022-01-04
  • 2023-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
相关资源
最近更新 更多