Прямо сейчас в моем проекте ASP.NET MVC Core2 у меня есть модель в EF database
, которая содержит несколько свойств:
public class SchoolEvents
{
public long ID { get; set; }
[Required]
[StringLength(40, ErrorMessage = "Max 40 characters")]
public string Title { get; set; }
[Required]
public string Description { get; set; }
[Required]
public DateTime WhenHappens { get; set; }
}
У меня нет проблем с получением данных из EF database
по MVCRazor Views
.Но я использую плагин JavaScript
Calendar в одном из моих просмотров, который будет отмечать события с db
на нем.Для этого сценарий получает данные в формате:
{ title: 'EventTitle', description: 'Few words about the event', datetime: new Date(2018, 8, 14, 16) }
Кажется очевидным, что я предполагал использовать в сценарии цикл for
, повторяющийся на объектах db
.
Поскольку я все еще не могу понять, что такое JS
, сейчас я знаю, как это сделать:
- для создания файла JSON в контроллере:
[Route("events")]
[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]
public ActionResult Comments()
{
var _events= _context.Events.OrderBy(c => c.ProductID).ToList(); //yes, I know, I should use repository in the best practice
return Json(_events);
}
-в JS
файле я могу использовать функцию kinf loadEventsFromServer()
, которая использует XMLHttpRequest
или Fetch
и анализирует ее (я пока не знаю, как выполнить анализ, я буду рад получить некоторые предложения),
И это оно.У вас есть другие идеи, как это сделать?
РЕДАКТИРОВАТЬ :
Обновление с частью кода плагинов, для ошибки консоли d is undefined
:
for (var i = 0; i < 42; i++) {
var cDay = $('<div/>');
if (i < dWeekDayOfMonthStart) {
cDay.addClass('c-day-previous-month c-pad-top');
cDay.html(dLastDayOfPreviousMonth++);
} else if (day <= dLastDayOfMonth) {
cDay.addClass('c-day c-pad-top');
if (day == dDay && adMonth == dMonth && adYear == dYear) {
cDay.addClass('c-today');
}
for (var j = 0; j < settings.events.length; j++) {
var d = settings.events[j].datetime;
if (d.getDate() == day && d.getMonth() == dMonth && d.getFullYear() == dYear) {
cDay.addClass('c-event').attr('data-event-day', d.getDate());
cDay.on('mouseover', mouseOverEvent).on('mouseleave', mouseLeaveEvent);
}
}
cDay.html(day++);
} else {
cDay.addClass('c-day-next-month c-pad-top');
cDay.html(dayOfNextMonth++);
}
cBody.append(cDay);
}