首页 > 解决方案 > 使用 Ajax 在完整日历上显示数据而不显示记录

问题描述

我创建了一个完整的日历并使用 ajax 从数据库表中填充事件。

我可以得到显示的图表,但它没有从数据库中填充事件,而是显示今天的日期和时间,并且只显示一个事件。

我不确定我做错了什么。

我正在关注本教程: http: //www.dotnetawesome.com/2017/06/event-calendar-in-aspnet-mvc.html

当前 显示的内容

我的布局页面中的脚本

    <script>
    $(document).ready(function () {
        var events = [];
        $.ajax({
            type: "GET",
            url: "/Calendar/Schedules",
            success: function (data) {
                $.each(data, function (i, v) {
                    events.push({
                        title: v.Subject,
                        description: v.Description,
                        start: moment(v.Start),
                        end: v.EndTime != null ? moment(v.EndTime) : null,
                        color: v.ThemeColor,
                        allDay: v.IsFullDay
                    });
                })

                GenerateCalender(events);
            },
            error: function (error) {
                alert('failed');
            }
        })
        function GenerateCalender(events) {
            $('#calender').fullCalendar('destroy');
            $('#calender').fullCalendar({
                contentHeight: 400,
                defaultDate: new Date(),
                timeFormat: 'h(:mm)a',
                header: {
                    left: 'prev,next today',
                    center: 'title',
                    right: 'month,basicWeek,basicDay,agenda'
                },
                eventLimit: true,
                eventColor: '#378006',
                events: events

            })
        }
    });
</script>

CalendarController下的get方法

public JsonResult Schedules()
        {
            var schedules = _context.Schedules.ToList();
            var result = new JsonResult(new { Data = schedules});
           return new JsonResult(result.Value);
        }

标签: javascriptc#ajaxasp.net-core

解决方案


但是它没有从数据库中填充事件

  1. 请注意,您正在学习ASP.NET Classic而不是ASP.NET Core的旧教程。我们返回 a 的方式JsonResult已经改变

    公共 JsonResult Schedules()
    {
        var schedules = _context.Schedules.ToList();
        var result = new JsonResult(new { Data = schedules}); 
        返回新的 JsonResult(result.Value);
        返回新的 JsonResult(schedules);
    }
    

    今天我们不再需要指定一个Data属性JsonResult了。相反,只需构造一个JsonResultby new JsonResult(the_data)

  2. 第二个问题是,如果您使用的是 ASP.NET Core 3.1 ,则默认返回的 json 是Camel-Cased 。但是,您的 javascript 代码可能假定服务器返回的 JSON 是Pascal-Cased。如果是这种情况,请更改您的 js 代码,如下所示:

    events.push({
         title: v.Subject,
        标题:v.主题,
        描述: v.描述,
        描述: v.描述,
        开始:时刻(v.Start),
        开始:时刻(v.start),
        结束: v.EndTime != null ?时刻(v.EndTime):空,
        结束: v.endTime != null ?时刻(v.endTime):空,
        颜色:v.ThemeColor,
        颜色:v.themeColor,
        allDay: v.IsFullDay
        allDay: v.isFullDay
    });
    

推荐阅读