我正在使用带有ASP.NET MVC应用程序的jQuery完整日历。我的日历全年将有600到3000个活动。我将所有事件从我的控制器返回到视图,但是当我更改几个月时,我的代码再次调用数据库。我想要只为视图中的日期调用必要的事件或重用我拥有的数据,除非有一个事件的时间戳大于上一个视图中的最大时间戳。我正在寻找最佳实践/推荐方法。如果我只在视图中使用日期的get事件,我如何告诉我的ASP.NET MVC控制器在哪些日子可见?
客户端:
$(document).ready(function(){ (文档)$ .ajaxStart($ blockUI).ajaxStop($ unblockUI。); getCalendar(); });
function getCalendar() { $( “#日历”)。fullCalendar({ loading:function(bool){
},
height: 500,
dayClick: function (date, allDay, jsEvent, view) {
},
eventClick: function (calEvent, jsEvent, view) {
},
dayRender: function (daysOfWeek, cell) {
$(cell).addClass('fc-state-highlight');
},
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek'
},
editable: false,
events: function (start, end, callback) {
// UNDONE This should not be hard set
var qs = Math.random();
var url = '@Url.Action(@"GetJSONCalendarEvents")';
url += "?rand=" + Math.random();
url = decodeURIComponent(url);
$.getJSON(url, function (locationsArray) {
var result = $(locationsArray).map(function () {
return {
id: this.id,
title: this.title,
start: this.start,
end: this.end,
allDay: this.editable,
className: this.className,
EventType: this.EventType
};
}).toArray();
callback(result);
});
},
eventRender: function (event, element) {
}
});
}
答案 0 :(得分:1)
您需要在初始化fullCalendar之前调用事件数据,然后将事件传递给事件。
$(document).ready(function () { $(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);
var myData;
myData = function () {
// UNDONE This should not be hard set
var qs = Math.random();
var url = '@Url.Action(@"GetJSONCalendarEvents")';
url += "?rand=" + Math.random();
url = decodeURIComponent(url);
$.getJSON(url, function (locationsArray) {
var result = $(locationsArray).map(function () {
return {
id: this.id,
title: this.title,
start: this.start,
end: this.end,
allDay: this.editable,
className: this.className,
EventType: this.EventType
};
}).toArray();
return result;
});
getCalendar(myData); });
function getCalendar() { $("#calendar").fullCalendar({ loading: function (bool) {
},
height: 500,
dayClick: function (date, allDay, jsEvent, view) {
},
eventClick: function (calEvent, jsEvent, view) {
},
dayRender: function (daysOfWeek, cell) {
$(cell).addClass('fc-state-highlight');
},
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek'
},
editable: false,
events: myData
},
eventRender: function (event, element) {
}
});
}