在下面的代码中,我尝试从数据库中的表中选择事件,以在开源日历中显示它Fullcalendar.io
public JsonResult GetEvents()
{
using (var db = new MyDatabaseEntities())
{
var select = from cevent in db.EventTables
select new {
id = cevent.Id,
start = cevent.Start_Time,
end = cevent.End_Time
};
var rows = select.ToArray();
return Json(rows, JsonRequestBehavior.AllowGet);
}
}
问题是我使用如下事件来获取数据,如文档中所述:
events: function () {
$.ajax({
url: 'GetEvents',
type: 'GET',
success: function (result) {
console.log(result);
},
error: function (result) {
console.log("data is not fetshed from database");
}
});
},
当在浏览器中查看控制器后面的图片是结果:
答案 0 :(得分:2)
您需要在ISO8601日期字符串中返回开始和结束参数的日期。如http://fullcalendar.io/docs/event_data/startParam/
所述代码应为:
public JsonResult GetEvents()
{
using (var db = new MyDatabaseEntities())
{
var events = from cevent in db.EventTables
select cevent;
var rows = events.ToList().Select(cevent => new {
id = cevent.Id,
start = cevent.Start_Time.AddSeconds(1).ToString("yyyy-MM-ddTHH:mm:ssZ"),
end = cevent.End_Time.ToString("yyyy-MM-ddTHH:mm:ssZ")
}).ToArray();
return Json(rows, JsonRequestBehavior.AllowGet);
}
}
我建议在开始时间加1秒,以避免与以下事件发生冲突: Event1 10:00至11:00 Event2 11:00至11:30
对于fullcalendar.io,Event2与Event1重叠,因为Even1的最后一秒和Event2的第一秒。