由于大多数StackOverflow的帖子都是关于Fullcalender V3的,并且我使用的是第4版,所以我问如何将fullcalendar连接到服务器。我正在使用MVC,但似乎没有让日历通过Json Event Feed加载事件。我没有收到任何错误,并且响应实际上在那里,只是没有生成事件...
Controller:
public JsonResult GetCalendarInformation(int calendarIndex, DateTime start, DateTime end)
{
IList<CalenderEvent> calenderEvents = new List<CalenderEvent>();
calenderEvents.Add(new CalenderEvent
{
Id = 1,
Title = "Google search",
Start = DateTime.Now.Ticks,
End = DateTime.Now.AddHours(4).Ticks,
Description = "test",
Information = "test"
});
return Json(new
{
events = calenderEvents
}, JsonRequestBehavior.AllowGet);
}
}
VM:
public class CalenderEvent
{
public int Id { get; set; }
public string Title { get; set; }
public long Start { get; set; }
public long End { get; set; }
public string Description { get; set; }
public string Information { get; set; }
}
Javascript:
var calendar = new FullCalendar.Calendar(calendarEl, {
events: {
url: $globfun.createAbsoluteUrlToServer("HOST/GetCalendarInformation"),
extraParams: {
calendarIndex: '1'
},
success: function (doc) {
var d = doc; // -> Response
}
}
});
响应看起来像这样:
Events[0]:{Id: 1, Title: "Google search", Start: 637112479258609900, End: 637112623258609900, Description: "test", Information: "test"}
但是我也尝试了其他回应。
我还没有找到任何有关响应对象外观的文档。也许问题出在我的extendedProps的“描述”和“信息”中?如果没有其他选项,我仍然可以通过ajax和
手动进行操作calendar.addEvent( event [, source ] )
但是我不认为那是这样...
最后,经过反复试验,我弄清楚了如何使用一个类来设置和获取那些日历事件。
事件的结构保持不变,就像我手动定义它们一样:
[
{ // this object will be "parsed" into an Event Object
title: 'The Title',
start: '2018-09-01',
end: '2018-09-02'
}
]
我的班级现在看起来像这样...
public class CalenderEvent
{
public string id { get; set; }
public string title { get; set; }
public string start { get; set; }
public string end { get; set; }
public string description { get; set; }
public string information { get; set; }
}
当我像这样将我的DateTime解析为ISO8601时...
public JsonResult GetCalendarInformation(int calendarIndex, DateTime start, DateTime end)
{
IList<CalenderEvent> calenderEvents = new List<CalenderEvent>();
calenderEvents.Add(new CalenderEvent
{
id = "1",
title = "Google search",
start = DateTime.UtcNow.ToString("yyyy-MM-ddTHH\\:mm\\:ss"),
end = DateTime.UtcNow.AddHours(4).ToString("yyyy-MM-ddTHH\\:mm\\:ss"),
description = "test",
information = "test"
});
return Json(calenderEvents, JsonRequestBehavior.AllowGet);
}
花了我太多的时间来设置此通信...