FullCalendar不会绑定到ASP.NET MVC3 Action的Json feed

我无法让FullCalendar jquery插件绑定到来自ASP.NET MVC3操作的Json数组。

我已经从代码中删除了几乎所有的东西,试图追捕这个问题; 我留下了这个,从我读过的每篇SO和博客文章中都可以发现:

行动(日历控制器)

    public JsonResult Events(double start, double end)
    {
        var rows = new object[] { new { title="Event1", start= "2011-04-04" }, 
                                  new { title="Event2", start= "2011-04-05" } };
        return Json(rows, JsonRequestBehavior.AllowGet);
     }

视图

  <script type='text/javascript'>
  $(document).ready(function () {
     $('#calendar').fullCalendar({
        events: '@Url.Content("~/Calendar/Events")'
     })
});

结果是一个空白日历,没有绑定事件。 我已经证实Json正在被检索:

Json的结果

[{"title":"Event1","start":"2011-04-04"},{"title":"Event2","start":"2011-04-05"}]

这工作正常:

   $(document).ready(function () {
       $('#calendar').fullCalendar({
           events: [{title: 'Event1',start: '2011-04-04'},
                    {title: 'Event2',start: '2011-04-05'}
                   ]});
   });  

我尝试过使用所有数量的日期格式(包括ISO8601和* nix时间戳),并得到了相同的结果:没有绑定事件,只是一个空白日历如果我向.fullCalendar对象添加$ .ajax error:所以大概是Json返回的东西 - 但它对我来说看起来很好。

我使用FullCalendar 1.5(尽管我也尝试1.4.11),JQuery 1.5.1,JQueryUI 1.8.11。

我尝试了所有我能想到的 - 任何想法都非常感谢!


我介入并发现问题 - fullcalendar.js和jquery.validate.js之间存在函数名冲突。


使用$ .ajax()方法。

行动(日历控制器)

    public JsonResult Events(string start, string end)
    {
        //convert string to date
        DateTime _start = DateTime.TryParse(start, out _start) ? _start : DateTime.Now.Date; 
        DateTime _end = DateTime.TryParse(end, out _end) ? _end : DateTime.Now.Date; 

        var rows =
        new object[] { new { title="Event1", start= "2011-04-04" },                                    
        new { title="Event2", start= "2011-04-05" } };
        return Json(rows, JsonRequestBehavior.AllowGet);
    } 

视图

    $(document).ready(function () {
    $('#calendar').fullCalendar({

    events: function (start, end, callback) {
        $.ajax({
            url: '@Url.Content("~/Calendar/Events")',
            dataType: 'json',
            data: {
                start: start.toLocaleString("yyyy-mm-dd"),
                end: end.toLocaleString("yyyy-mm-dd")
            },  

            success: function (doc) {
                var events = [];
                $.each(doc, function (key, val) {
                    events.push({
                        title: val.title,
                        start: val.start, 
                        url: 'http://google.com'
                    });
                });  

                callback(events); 
            }  
        });  
    }  
    });  
    }) 

希望这会有所帮助。


也许不是这样的:

return Json(rows, JsonRequestBehavior.AllowGet);

尝试这个:

return Json(rows.ToArray(), JsonRequestBehavior.AllowGet);

或者不是这样的:

events: '@Url.Content("~/Calendar/Events")'

尝试这个:

events: '@Url.Action("Events", "Calendar")'
链接地址: http://www.djcxy.com/p/51825.html

上一篇: FullCalendar won't bind to Json feed from ASP.NET MVC3 Action

下一篇: Reusing Queries in Hibernate