У меня есть часть кода FullCalendar на моей странице для извлечения событий из контроллера API в проекте Razor Pages:
var calendar;
document.addEventListener('DOMContentLoaded', function () {
var calendarEl = document.getElementById('calendar');
calendar = new FullCalendar.Calendar(calendarEl, {
plugins: ['dayGrid', 'interaction', 'list', 'timeGrid'],
defaultView: 'dayGridMonth',
customButtons: {
newEventButton: {
text: 'new event',
click: function () {
window.location.assign("Calendars/EditPersonnelEvent/0");
}
}
},
header: {
left: 'prev,next today',
center: 'title',
right: 'newEventButton,dayGridMonth,timeGridWeek,timeGridDay'
},
events: "/api/fetchEvents"
});
calendar.render();
})
, и, похоже, он работает просто отлично, вот фрагмент выборки :
Проблема в том, что извлеченное событие не отображается ни в календаре, ни в одном из представлений. Когда я вставляю это JSON в жестко запрограммированное событие, оно работает нормально, и я вижу событие, но только не из GET. Я пробовал это с eventSources безрезультатно. Я искал около 30 различных ответов здесь и все еще не повезло. JSON, похоже, правильно отформатирован, похоже, правильно выбирается, просто не отображается. И да, я смотрю в правильные дни;)
ЗАПРОШЕННОЕ ОБНОВЛЕНИЕ:
Вот данные "ответа":
и вот код. NET для этой выборки:
[Route("api/fetchEvents")]
[ApiController]
public class FetchEventsController : ControllerBase
{
private readonly IPersonnelEventService _personnelEventService;
public FetchEventsController(IPersonnelEventService personnelEventService)
{
_personnelEventService = personnelEventService;
}
// GET: api/FetchEvents/5
[HttpGet]
public string Get(string start, string end)
{
int currentUserId = User.Identity.GetUserId();
DateTime objStart = DateTime.Parse(start, null, System.Globalization.DateTimeStyles.RoundtripKind);
DateTime objEnd = DateTime.Parse(end, null, System.Globalization.DateTimeStyles.RoundtripKind);
List<Entities.PersonnelEvent> events = new List<Entities.PersonnelEvent>(_personnelEventService.GetPersonnelEventsByUserId(currentUserId, objStart, objEnd));
return JsonConvert.SerializeObject(events.Select(pe => pe.GetEventAsFullCalendarJson()).ToList());
}
}
и вот код для "GetEventAsFullCalendar Json":
public string GetEventAsFullCalendarJson()
{
var info = new
{
title = Name,
start = StartDate,
end = EndDate
};
return JsonConvert.SerializeObject(info);
}
}