我正在尝试实现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 文件中的方法。