使用Json从数据库获取数据到Fullcalendar.io

时间:2015-11-26 22:33:03

标签: c# json model-view-controller fullcalendar

在下面的代码中,我尝试从数据库中的表中选择事件,以在开源日历中显示它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");
            }
        }); 
    },

当在浏览器中查看控制器后面的图片是结果:

Returned Result from Json Controller

那就是如何在db中保存开始和结束时间 starttime and end time format in db 开始和结束日期格式错误,我无法修复它,任何人都可以帮忙。

1 个答案:

答案 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的第一秒。