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