Javascript 事件创建后FullCalendar未更新

Javascript 事件创建后FullCalendar未更新,javascript,jquery,ajax,asp.net-mvc,fullcalendar,Javascript,Jquery,Ajax,Asp.net Mvc,Fullcalendar,我在我的一个页面上使用,事件是从我拥有的数据库中填充的 我创建的活动基本上是: [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "Id,Title,StartDate,EndDate,DescriptionId,AllDay")] Event @event) { if (ModelState.IsValid) { db.Events.Add(@even

我在我的一个页面上使用,事件是从我拥有的数据库中填充的

我创建的活动基本上是:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,Title,StartDate,EndDate,DescriptionId,AllDay")] Event @event)
{
    if (ModelState.IsValid)
    {
        db.Events.Add(@event);
        db.SaveChanges();
        return RedirectToAction("Index", "Main");
    }

    return View(@event);
}
当我被重定向到
控制器上的
索引
页面时,我刚刚创建的事件没有显示在日历上

以下是我的
索引
操作:

public class MainController : Controller
{
    private DbContextName db = new DbContextName();
    // GET: Main
    public ActionResult Index()
    {
        var data = db.Events.ToList();
        return View(data);
    }

    // more code not related to the question
}
以下是我填充日历的方式:

$('#calendar').fullCalendar({
    themesystem: 'bootstrap-yeti',
    header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay,listWeek'
    },
    allDay:true,
    navLinks: true, // can click day/week names to navigate views
    editable: false,
    print: true,
    eventLimit: true, // allow "more" link when too many events
    events: function(start, end, timezone, callback) {
        $.ajax({
            url: submissionUrl,
            type: "GET",
            dataType: "JSON",
            success: function(result) {
                console.log(result);
                var events = [];

                $.each(result,
                    function(i, data) {

                        events.push({
                            title: data.Title,
                            description: data.Description,
                            start: moment(data.Start).format("YYYY-MM-DD HH:mm"),
                            end: moment(data.End).format("YYYY-MM-DD HH:mm"),
                            color: data.Color
                        });
                    });

                callback(events);
            },
            error: function(jqXHR) {
                console.log(jqXHR);
            }
        });
    },
    timeFormat: 'HH:mm', // uppercase H for 24-hour clock
    eventRender: function (event, element) {
        element.find('.fc-title').append("<br/>" + event.description);
    }
});

更新

尝试向内部ajax调用添加
cache:false
。这将使jquery尽量避免获取缓存数据

供将来考虑

由于您似乎有一个API服务,它返回的内容非常接近fullcalendar所寻找的内容,因此您可以简化定义填充事件的方式

let eventUrl = 'http://myserver/myapp/mycontroller/geteventjson';

$('#calendar').fullCalendar({
                themesystem: 'bootstrap-yeti',
                header: {
                    left: 'prev,next today',
                    center: 'title',
                    right: 'month,agendaWeek,agendaDay,listWeek'
                },
                allDay: true,
                navLinks: true, 
                editable: false,
                print: true,
                eventLimit: true,
                events: eventUrl, // Simply a url that returns JSON events
                timeFormat: 'HH:mm', 
                eventRender: function (event, element) {
                    element.find('.fc-title').append("<br/>" + event.description);
                }
            });
让eventUrl='0http://myserver/myapp/mycontroller/geteventjson';
$(“#日历”).fullCalendar({
主题系统:“引导雪人”,
标题:{
左:“上一个,下一个今天”,
中心:'标题',
右图:“月、agendaWeek、agendaDay、listWeek”
},
全天:没错,
导航链接:是的,
可编辑:false,
印刷品:是的,
eventLimit:对,
events:eventUrl,//只是返回JSON事件的url
时间格式:“HH:mm”,
eventRender:函数(事件,元素){
元素。查找('.fc title')。追加(“
”+事件。说明); } });

完整日历可以直接从您的服务中填充,而无需本地收集。

当您说您在控制台中看到它时,您的意思是在“网络”选项卡上,它没有从服务器返回?这可能是缓存问题。确保控制台中包含事件的请求没有HTTP代码304。在调试时,我在
GetCalendarData
操作上放置了一个断点。。当我在创建一个事件后被重定向时,这个断点永远不会被命中。。但是当我刷新页面时。。断点是Hitnop,而不是console中的304。@kettch我刚刚让它工作,我在一个单独的js文件中使用了您在问题中看到的脚本,并在Bundle.config中引用了该js文件,在我的
\u布局
页面中引用了该捆绑包。。但是现在我只是将上面的js复制到
索引
页面上,它成功了。有什么原因我不能把这个单独归档吗?@kettch实际上,没关系。。由于某种原因,它不会再出现了。。不管剧本在哪里。。。
let eventUrl = 'http://myserver/myapp/mycontroller/geteventjson';

$('#calendar').fullCalendar({
                themesystem: 'bootstrap-yeti',
                header: {
                    left: 'prev,next today',
                    center: 'title',
                    right: 'month,agendaWeek,agendaDay,listWeek'
                },
                allDay: true,
                navLinks: true, 
                editable: false,
                print: true,
                eventLimit: true,
                events: eventUrl, // Simply a url that returns JSON events
                timeFormat: 'HH:mm', 
                eventRender: function (event, element) {
                    element.find('.fc-title').append("<br/>" + event.description);
                }
            });