将外部(可放置)事件保存到数据库

时间:2012-06-19 14:16:11

标签: c# asp.net-mvc-3 fullcalendar

我正在尝试使用FullCalendar,它显示正常,包含来自数据库和Google日历的Feed更新事件。

但是我的问题是如何在页面上有一个保存按钮,当按下时,允许我将日历中的所有事件传回给我的控制器,以便将它们保存到数据库中?

一些代码(查看):

$(document).ready(function () {
    /* initialize the external events
    -----------------------------------------------------------------*/
    $('#external-events div.external-event').each(function () {
        // create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/)
        // it doesn't need to have a start or end
        var eventObject = {
            title: $.trim($(this).text()) // use the element's text as the event title
        };

        // store the Event Object in the DOM element so we can get to it later
        $(this).data('eventObject', eventObject);
        // make the event draggable using jQuery UI
        $(this).draggable({
            zIndex: 999,
            revert: true,      // will cause the event to go back to its
            revertDuration: 0  //  original position after the drag
        });
    });

    // -------- Calendar set up ...
    $('#calendar').fullCalendar({
        eventSources:
        [
            { // Uk holidays
                url: 'http://www.google.com/calendar/feeds/uk__en%40holiday.calendar.google.com/public/basic',
                color: 'blue',
                textColor: 'white'
            },
            { // booked availability
                url: '/avalibility/GetAvail',
                color: 'red'
            }
     ],
    //... more set up
});

控制器代码:

public JsonResult GetAvail(double start, double end)
{
    var startDateTime = FromUnixTimestamp(start);
    var endDateTime = FromUnixTimestamp(end);

    var events   = from e in db.PROJECT_CALENDAR
                        select e;

    var AvilList = new List<object>();
    foreach (var e in events)
    {
        AvilList.Add(
            new
            {
                id = e.ID,
                title = e.Title,
                description = e.Title,
                start = e.DateStart,
                end = e.DateEnd
            });
    }
    return Json(AvilList.ToArray(), JsonRequestBehavior.AllowGet);
}      

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用clientEvents回调?像这样:

var eventsFromCalendar = $('#calendar').fullCalendar( 'clientEvents');

这将返回包含所有fullCalendar事件对象的JSON数组。您可以将此数组传递给控制器​​,然后将它们存储到数据库中。

希望有所帮助!