2011-08-05 111 views
2

我正在使用asp.net mvc 3实现FullCalendar jquery。它工作正常,但事件没有被返回到日历。萤火虫控制台告诉我他们肯定会被退回,他们只是没有出现在日历上。我认为这与日期格式有关,我已经阅读过,但无法获得任何工作。这是我的控制器;ASP.NET MVC 3 Razor jQuery完整日历JSON日期时间格式

public ActionResult CalendarData() 
{ 
    DateTime myDate = DateTime.Now; 

    var eventlist = from e in db.WhatsOns 
        where e.start >= myDate && e.CalenderDisplay 
        select e; 

    return Json(eventlist.ToArray(), JsonRequestBehavior.AllowGet); 
} 

而在我看来的JavaScript;

<script type="text/javascript"> 
    $(document).ready(function() {    
     $('#calendar').fullCalendar({ 
    theme: true, 
    header: { 
     left: 'prev,next today', 
     center: 'title', 
     right:'' 

    }, 
    defaultView: 'month', 
    editable: false, 
    events: "/WhatsOn/CalendarData" 
    }); 
}); 

</script> 

cosole输出如下;

[{"ID":1,"start":"\/Date(1312844400000)\/","end":"\/Date(1313103600000) \/","Name":"Test","Desc":"This is a test event, it will be  great!","link":"http:www.link./com","CalenderDisplay":true,"day":null,"whtscount":0,"isActive":false},{"ID":2,"start":"\/Date(1313708400000)\/","end":"\/Date(1314054000000)\/","Name":"This another test event5, it\u0027s on later than the first one.","Desc":"We aere all gpoing to get together and drink,","link":"http:www.link./com","CalenderDisplay":true,"day":null,"whtscount":0,"isActive":false}] 
+0

它们返回的格式是什么?你可以添加控制台输出吗?添加了 – andyb

+0

。格式是\t“/ Date(1313103600000)/” – Dan

+0

刚刚看到您的编辑,“标题”是,我认为是什么导致您的问题。 – Nemanja

回答

2

我最近有一个相同的问题,而不是在.NET原生的,但可能是同一个问题 -

完整的日历需要一个数组,其每一个元素都有明确的标题和开始的索引,至少。

换句话说,我没有得到所示的事件,直到我格式化了的JSON我的动作要回这样的事情(这是从我的应用程序的JSON的作品):

events: [ 
    0: {sessionId:259, title:Completed regular, start:2011-08-08} 
    1: {sessionId:260, title:Completed regular, start:2011-08-10} 
    2: {sessionId:261, title:Not done, start:2011-08-12} 
    3: {sessionId:262, title:Not done, start:2011-08-13} 
    4: {sessionId:263, title:Not done, start:2011-08-15} 
    5: {sessionId:264, title:Not done, start:2011-08-17} 
] 

希望这帮助,

干杯

+0

嗨Nemanja,谢谢你的回复。我有一个ID和开始日期。我会为我的数据模型添加一个标题,但我不确定如何将日期格式转换为完整日历可以使用的格式。你能解释你如何格式化json结果吗?我知道你说这不是.net,但是,建议会很棒!再次感谢! – Dan

+0

看看http://stackoverflow.com/questions/1544010/jquery-full-calendar-not-showing-events,有人已经有关于日期解析相同的问题,接受的答案似乎解决了这个问题。 – Nemanja

+0

+1正确答案 – andyb

1

你会发现JSON specification不支持序列化容易DateTime类型的对象,所以给您最近更换的代表,我建议发送日期为字符串(一种变通方法,我不得不在最近支持AJAX的应用程序中使用)。在由JavaScript Date.toUTCString()生成的字符串上使用.NET's Date.Parse() method,并使用由本机.NET Date.ToString() method生成的字符串调用JavaScript's Date constructor,我可以在.NET应用程序和JavaScript之间轻松交换日期时间数据。我会建议这种方法。

请记住,如果您的服务器时区与应用程序用户不同,您的应用程序可能会要求UTC时间表示数据存储区中的时间。在为时间本地化调用.NET的ToString()时,我建议使用RFC1123 pattern specifier。 JavaScript的Date构造函数可以轻松解析这种格式。

+0

Thaks的建议。我打算让网站按照规范工作,而不是回过头来为将来的版本整理。线程@ http://stackoverflow.com/questions/1544010/jquery-full-calendar-not-showing-events修复了我的问题。 – Dan