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

添加Events后Razor页面中FullCalendar消失问题求助

问题排查与解决办法

1. 先确认JSON格式是否真的合法

你说打印Events字符串正常,但可能存在隐性格式问题:

  • 必须保证JSON里的字符串用双引号(不能是单引号),日期格式要符合FullCalendar要求,比如"2024-05-20T10:00:00"这种标准格式。
  • 别手动拼接JSON,后端用ASP.NET内置的JsonSerializer.Serialize()来序列化数据,避免人为出错,示例代码:
var events = _db.Events.ToList();
ViewData["Events"] = JsonSerializer.Serialize(events);
  • 把ViewData输出的字符串复制到JSON校验工具里检查语法,说不定有你没注意到的逗号、引号遗漏错误。

2. 查看浏览器控制台的报错信息

按F12打开开发者工具,切换到Console标签,看看有没有JS语法错误——日历消失大概率是因为JS执行报错中断了,这里能直接看到问题根源,比如JSON解析失败、变量未定义之类的提示。

3. 用静态JSON测试排除问题

先把events配置换成静态的合法JSON数组,测试日历是否能正常加载:

events: [
  { title: '测试事件', start: '2024-05-20' },
  { title: '第二个事件', start: '2024-05-21', end: '2024-05-23' }
]

如果静态数据能正常显示,说明问题出在后端生成的JSON上;如果静态数据也不行,就得检查FullCalendar的CSS、JS文件路径是否正确,版本是否兼容。

4. 检查ViewData渲染后的实际内容

在CSHTML里单独输出@Html.Raw(ViewData["Events"]),看页面渲染后是不是纯JSON数组,有没有被额外的HTML标签包裹,或者出现转义字符处理错误的情况。

5. 改用强类型模型传递数据

ViewData是弱类型,容易出现类型转换问题,建议换成强类型模型:

  • 先定义事件模型:
public class CalendarEvent
{
    public string Title { get; set; }
    public DateTime Start { get; set; }
    // 按需添加其他字段,比如End、Color等
}
  • 后端把数据传给视图:
public IActionResult Index()
{
    var events = _db.Events.Select(e => new CalendarEvent
    {
        Title = e.Title,
        Start = e.StartTime
    }).ToList();
    return View(events);
}
  • 视图顶部指定模型:
@model List<CalendarEvent>
  • 初始化FullCalendar时这么写:
events: @Html.Raw(Json.Serialize(Model))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:43:21