2011-04-19 39 views
0

我使用asp.net的MVC 3和jQuery 1.5.2使用jQuery完整的日曆1.5.1我的活動現在將顯示? - jQuery的完整的日曆

我有這個

$('#calendar').fullCalendar ({ 
    theme: true, 
    header: { 
     left: 'prev,next today', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
    }, 
    editable: false, 
    eventSources:[{ 
     url: '/Home/GetCurrentMonth', 
     type: 'Get', 
     color: 'yellow', // a non-ajax option 
     textColor: 'black' // a non-ajax option 
    }] 
}); 

它熄滅,不會打我的JsonResult方法和返回類似這樣的內容

[{"id":9,"title":"test4","start":"4/1/2011 5:00:00 AM","end":"4/1/2011 6:30:00 AM","allDay":false}, 
{"id":9,"title":"test4","start":"5/1/2011 12:00:00 PM","end":"5/1/2011 1:30:00 PM","allDay":false}] 

然而什麼也沒有顯示出來。我究竟做錯了什麼?

List<CalendarAppointment> appointments = 
    calendarService.GetAppointment("[email protected]", start, end); 

List<CalendarEventViewModel> vm = Mapper.Map<List<CalendarAppointment>, 
    List<CalendarEventViewModel>>(appointments); 

return Json(vm, JsonRequestBehavior.AllowGet); 

這就是GetCurrentMonth中的內容。

public class CalendarEventViewModel 
{ 
    public int id { get; set; } 
    public string title { get; set; } 
    public string start { get; set; } 
    public string end { get; set; } 
    public bool allDay { get; set; } 
} 

這是我的ViewModel。

+0

「4/1/2011 5:00:00 AM」不是日期格式fullcalendar明白 – arshaw 2011-05-09 05:18:01

+0

@arshaw - 爲什麼它不理解它?這似乎是jQuery驗證1.7和你的fullcalendar的問題。由於我升級了jQuery驗證它的工作原理,並沒有與這些日期有問題,我發送他們仍然是這樣的(5/9/2011 5:00:00 PM) – chobo2 2011-05-09 05:37:50

+0

對不起,我收回,我想這是IETF,fullcalendar確實瞭解。很高興你知道驗證問題。 – arshaw 2011-05-09 07:04:32

回答

0

問題出在jQuery驗證1.7影響它。不知道爲什麼只有當json結果出現時才影響它,但這是問題所在。

1

以下爲我工作:

控制器:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult GetCurrentMonth() 
    { 
     var vm = new[] 
     { 
      new CalendarEventViewModel 
      { 
       id = 1, 
       title = "title 1", 
       start = "start 1", 
       end = "end 1", 
       allDay = false 
      }, 
      new CalendarEventViewModel 
      { 
       id = 2, 
       title = "title 2", 
       start = "start 2", 
       end = "end 2", 
       allDay = true 
      }, 
     }; 
     return Json(vm, JsonRequestBehavior.AllowGet); 
    } 
} 

查看:

<script src="@Url.Content("~/fullcalendar-1.5.1/fullcalendar/fullcalendar.min.js")" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(function() { 
     $('#calendar').fullCalendar({ 
      theme: true, 
      header: { 
       left: 'prev,next today', 
       center: 'title', 
       right: 'month,agendaWeek,agendaDay' 
      }, 
      editable: false, 
      eventSources: [{ 
       url: '@Url.Action("GetCurrentMonth", "Home")', 
       type: 'GET', 
       color: 'yellow', // a non-ajax option 
       textColor: 'black' // a non-ajax option 
      }] 
     }); 
    }); 
</script> 

<div id="calendar"></div> 

不知道什麼可能是你的代碼錯誤。我發現你沒有在$(document).ready處理程序中包裝fullCalendar調用,所以在嘗試將日曆附加到#calendar元素時,DOM可能尚未加載。

+0

刪除了所有其他工作的插件。一旦把每個插件放回去,我發現Jquery Validate 1.7在執行json請求時出於某種未知原因與fullcalendar衝突。所以我已升級到Jquery Validate 1.8,問題已修復。 – chobo2 2011-04-20 14:19:43

+0

@ chobo2,是的,這是因爲jquery.validate 1.7與jquery 1.5.2不兼容。 – 2011-04-20 14:26:51

+0

這也許,但我仍然覺得它奇怪的是,它影響了一些與jquery驗證無關的插件,並且它只在使用json請求時影響插件。 – chobo2 2011-04-20 15:43:12