在我的例子中,通过JavaScript从EntityFramework数据库获取数据的最佳和最有效的方法是什么?

在我的例子中,通过JavaScript从EntityFramework数据库获取数据的最佳和最有效的方法是什么?,javascript,c#,entity-framework,asp.net-core-mvc,Javascript,C#,Entity Framework,Asp.net Core Mvc,现在在我的ASP.NET MVC Core2项目中,EF数据库中有一个模型,它包含几个属性: public class SchoolEvents { public long ID { get; set; } [Required] [StringLength(40, ErrorMessage = "Max 40 characters")] public string Title { get; set; } [R

现在在我的ASP.NET MVC Core2项目中,
EF数据库中有一个模型,它包含几个属性:

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; }
    }
我可以通过MVC
Razor视图
从EF数据库中获取数据。但是我在我的一个视图中使用了
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
文件中,我可以使用
loadEventsFromServer()
函数的kinf,它使用
XMLHttpRequest
Fetch
并解析它(我还不知道如何解析,我很乐意得到一些建议)

就是这样。你还有其他的想法吗

编辑

使用部分插件代码更新,因为控制台错误
d未定义

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);
            }
for(变量i=0;i<42;i++){
var cDay=$('');
如果(i}否则,如果(第天),我将建议您使用ajax请求

Javascript:Ajax


很酷的方法,但我得到了控制台错误
d未定义
,我猜它是日历插件中的
d
。在编写
console.log(事件);
console.log(开始)后,我用部分插件code.P.s.更新了问题
在返回代码中的事件之前,我的控制台中根本没有任何信息。我暂时设法使用MVC组件并在其中混合使用
JS
Razor
code:
事件:[@foreach(模型中的var项){{标题:'@item.title',说明:'@item.description',日期时间:新日期('@item.WhenHappens.Year',@item.WhenHappens.Month-1',@item.WhenHappens.Day','@item.WhenHappens.Hour'),}]
我想知道如何使用普通的
JS
在ajax的成功中设置调试器,并在成功函数的数据中找到您正在获得的内容。只需将
调试器
放在
var events
之前,并找到您在数据中获得的内容,这些内容将对您获得的数据有意义,并且您需要进行处理。。
        $.ajax({
            type: 'POST',
            url: '@URL.Action("Comments","Controller")',
            contentType: 'application/json;charset=utf-8',
            dataType: 'json',
            data: {},
            success: function (data) {
             var events = new Object();
                events = $.map(data.d, function (item, i) {
                    for (var j = 0; j < data.d.length; j++) {
                        var event = new Object();                            
                        var startDate = Date.parse(item.WhenHappens )
                        event.start = startDate;                           
                        event.title = item.Title;
                        event.backgroundColor = "#c6458c";
                        event.description = item.Description;
                        return event;
                    }
                })
                callCalender(events);
            },
            error:function(e){  

            }
        });
[Route("events")]
    [HttpPost]
    [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);
    }