JSON 源事件:仅在控制器没有参数时调用控制器



我正在尝试实现json提要FullCalendar。

如果我对没有参数的 GetCalendarEvents 使用签名,视图将调用该函数。 如果我将它与开始和结束参数一起使用,则不会调用该函数。 我可以在代码中找到与示例中的代码明显不同的是,它们以某种方式侥幸在视图中调用脚本,而无需我必须输入标头信息。

视图中的标头代码

<link rel='stylesheet' href='~/Content/fullcalendar.css' />
<link rel='stylesheet' href='~/Content/scheduler.css' />
<script src='~/Scripts/jquery-2.2.0.js'></script>
<script src='~/Scripts/moment.min.js'></script>
<script src='~/Scripts/fullcalendar.js'></script>
<script src='~/Scripts/moment.js'></script>
<script src='~/Scripts/scheduler.js'></script>

这在我从这里下载的示例代码中工作正常。http://www.codeproject.com/Articles/638674/Full-calendar-A-complete-web-diary-system-for-jQue

以下是有问题的代码。

查看代码

$('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        defaultView: 'agendaDay',
        editable: true,
        allDaySlot: false,
        selectable: true,
        slotMinutes: 15,
        events: '/Calendar/GetCalendarEvents/'
        });

控制器代码

public JsonResult GetCalendarEvents(double start, double end)
    //public JsonResult GetCalendarEvents()
    {
        var fromDate = CalendarEvent.ConvertFromUnixTimestamp(start);
        var toDate = CalendarEvent.ConvertFromUnixTimestamp(end);
        var rslt = _orderService.Query(s => s.FromDate >= fromDate && s.ToDate <= toDate);
        List<CalendarEvent> result = new List<CalendarEvent>();
        CalendarEvent rec = new CalendarEvent();
        rec.ID = "lskfj1231";
        rec.title = "Testing";
        rec.start = "2016-01-17T12:00:00Z";
        rec.end = "2016-01-17T13:00:00Z";
        result.Add(rec);
        var eventList = from e in result
                        select new
                        {
                            id = e.ID,
                            title = e.title,
                            start = e.start,
                            end = e.end
                        };
        var rows = eventList.ToArray();            
        return Json(rows, JsonRequestBehavior.AllowGet);
    }

我整理好了。 由于未知的原因(我将在某个时候对此进行调查并更新此解决方案),示例项目/解决方案以 unix 时间格式向控制器发送开始和结束参数的请求。 我的项目/解决方案将请求发送到控制器,以获取 DateTime 格式的开始和结束参数。

我刚刚在日历控制器中修改了GetCalendarEvents(日期时间开始,日期时间结束)的签名,一切都很棒。

谢谢!

$('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        data : {start : 11, end : 15}
        defaultView: 'agendaDay',
        editable: true,
        allDaySlot: false,
        selectable: true,
        slotMinutes: 15,
        events: '/Calendar/GetCalendarEvents/'
        });

您需要在数据参数中传递属性

您可以通过

两种方式使用它。

1) 事件作为 JSON 源

eventSources: [
        // your event source
        {
            url: '/Calendar/GetCalendarEvents/',
            type: 'GET',
            data: {
                start: startDate,
                end: endDate
            },
            error: function() {
                alert('there was an error while fetching events!');
            }
        }
    ]

2) 事件即函数

events: function(start, end, timezone, callback) {
        $.ajax({
            url: '/Calendar/GetCalendarEvents/',
            data: {
                // our hypothetical feed requires UNIX timestamps
                start: start.unix(),
                end: end.unix()
            },
            success: function(events) {
                callback(events);
            }
        });
    }

在您下载的示例代码中,此操作在 fullcalendar.js 文件中处理。看看第 984 行的 _fetchEventSource method()。

我认为这是将日期添加到控制器方法调用中的地方。您可以跟踪您的代码以查看它是否正在通过 js 文件运行,但我的猜测是您没有以正确的顺序包含此文件,因此它没有利用 fullcalendar.js 文件中的方法。

相关内容

  • 没有找到相关文章

最新更新