如何使fullcalendar从我的mvc json feed中一次调用中获取所有事件?

时间:2012-02-21 16:00:01

标签: asp.net-mvc json fullcalendar

首先是这个问题的两个部分,使用简单示例如何获取fullcalendar以从我的JSON提要中获取所有事件而无需来回分页?我的日历是短期的,非常具体,所以在滚动日期时不需要重新加载事件。这是行动方法:

public JsonResult CalendarData(int id)
{
    List<object> json = new List<object>();

    json.Add(
        new
        {
            title = "Click for Google",
            start = string.Format("/Date({0})/", DateTime.Now.ToUnixTime()),
            end = string.Format("/Date({0})/", DateTime.Now.AddDays(1).ToUnixTime()),
            url = "http://google.com/"
        });

    return this.Json(json, JsonRequestBehavior.AllowGet);
}

这是我用来尝试在一次调用中重新获取所有事件的JS:

$(document).ready(function () {
    $('#calendar').fullCalendar({
        editable: false,
        events: "{controller}/calendardata/1",
        loading: function (bool) {
            if (bool) $('#loading').show();
            else $('#loading').hide();
        }
    });
});

我的问题的第二部分是我应该返回的日期格式(不确定我目前的情况是否正确?

由于

2 个答案:

答案 0 :(得分:0)

我没试过这个,但我怀疑你可以使用jQuery getJSON来获取数据,然后使用fullcalendar事件和/或eventsources属性来设置事件。这看起来像这样:

$.getJSON($("#calendarUri").val(), function(data) {
    $("#calendar").fullCalendar(
        {
            events: data
        }
    )
});

我相信当您以这种方式设置事件时, 应该继续使用相同的事件数据,而不是分页数,周数等。

然后在你看来:

@Hidden("calendarUri", Url.Action("CalendarData", new { id = 1 }))

请注意,通过在视图中使用隐藏字段来存储事件订阅源的网址,如果更改路由,则不会遇到麻烦。

答案 1 :(得分:0)

这篇文章对于我在事件中显示完整日历json值非常有用。

@Html.Hidden("calendarUri", Url.Action("LoadCalendarData","Home"))

jq.getJSON($("#calendarUri").val(), function (data) {
    jq('#calendar').fullCalendar({
        header: {
            //left: 'prev,next today',
            left: 'prev',
            center: 'title',
            //right: 'month,agendaWeek,agendaDay'
            right: 'next',
            height: '650',
        },
        defaultDate: '@currentDate',
        editable: true,
        eventLimit: true, // allow "more" link when too many events
        events: data
    });

});