You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVC项目集成Fullcalendar后日历无法显示事件问题求助

故障根因与修复方案

1. 事件字段不符合FullCalendar规范

FullCalendar 5.x版本要求事件必须包含start时间字段,默认读取title作为事件标题,你接口返回的字段是startDate、endDate、eventName,和规范完全不匹配,无法被识别为有效事件。
你可以选择修改后端返回字段,或者前端做字段映射:

后端修改示例

public JsonResult CalEvents()
{
   using (_context)
   {
       var events = _context.CalendarEventsNews.Select(e => new 
       {
           id = e.id,
           title = e.eventName,
           start = e.startDate,
           end = e.endDate,
           allDay = e.allDay,
           description = e.eventDescription,
           location = e.eventLocation
       }).ToList();
       return Json(events.ToArray(), JsonRequestBehavior.AllowGet);
   }
}

前端字段映射示例

var calendar = new FullCalendar.Calendar(calendarEl, {
  initialView: 'dayGridMonth',
  eventDataTransform: (rawEvent) => {
    return {
      id: rawEvent.id,
      title: rawEvent.eventName,
      start: rawEvent.startDate,
      end: rawEvent.endDate,
      allDay: rawEvent.allDay
    }
  },
  events: 'CalEvents/'
});

2. 日期格式不兼容

当前接口返回的是ASP.NET默认的\/Date(时间戳)\/格式,FullCalendar无法直接解析该格式,需要转换为ISO 8601标准日期格式。
可以在后端序列化时配置日期格式:

return Json(events.ToArray(), JsonRequestBehavior.AllowGet, Encoding.UTF8, new JsonSerializerSettings
{
    DateFormatHandling = DateFormatHandling.IsoDateFormat
});

也可以在前端eventDataTransform里加日期解析逻辑:

function parseAspNetDate(dateStr) {
  if (!dateStr) return null
  const timestamp = parseInt(dateStr.match(/\d+/)[0])
  return new Date(timestamp)
}
// 调用示例
start: parseAspNetDate(rawEvent.startDate)

3. 路由校验

如果修改后仍有问题,打开浏览器控制台确认接口请求是否正常,若返回404,检查events配置的路径是否正确,比如控制器是HomeController的话,要改成/Home/CalEvents。


内容的提问来源于stack exchange,提问作者user1735489

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:18:01