2011-11-22 22 views
2

我正在研究一個使用jQuery插件Fullcalendar的小應用程序。這個插件非常好,但現在我需要對它進行輕微更改。來自FullCalendar的調用控制器動作

事件存儲後,它會顯示在日曆上,默認情況下單擊該事件會顯示一個警報,其中包含事件標題。我想要發生的是點擊事件來調用我的日曆控制器上的操作。

,我現在用的是fullcalendar.js的JavaScript,然後我自己的JavaScript庫:

function padDigits(n, totalDigits) { 

    n = n.toString(); 

    var pd = ''; 

    if (totalDigits > n.length) { 

     for (i = 0; i < (totalDigits - n.length); i++) { 

      pd += '0'; 

     } 

    } 

    return pd + n.toString(); 

} 



function createEvent(date, allDay, jsEvent, View) { 

    var eventDate = padDigits(date.getMonth() + 1, 2) + '-' + 

        padDigits(date.getDate(), 2) + '-' + 

        padDigits(date.getFullYear(), 4); 

    window.location.href = "/Calendar/Create/" + eventDate; 

} 



$(document).ready(function() { 

    $('#calendar').fullCalendar({ 

     editable: true, 

     events: $('#calendar').data('url'), /*"/Calendar/GetEvents",*/ 

     eventClick: "/Calendar/ReviewApproveBooking", 

     dayClick: function (date, allDay, jsEvent, view) { 

      createEvent(date, allDay, jsEvent, view); 

     } 

    }); 

}); 

的eventClick就是我想要撥打電話。

的操作是這樣的:

[HttpGet] 
     [Authorize(Roles="Admin")] 
     public ActionResult ReviewApproveBooking() 
     { 
      var booking = from b in DBContext.Events 
          where b.EventID == 1 
          select b; 
      var em = booking.Single(); 
      Guid memberKey = em.MemberID; 
      MembershipUser mu_booker = Membership.GetUser(memberKey); 

      ProfileModel pm = ProfileModel.GetProfile(mu_booker.UserName); 

      em.BookerName = pm.FullName; 

      return View(em); 
     } 

     [HttpPost] 
     [Authorize(Roles="Admin")] 
     public ActionResult ReviewApproveBooking(int id, EventModel em) 
     { 
      // get the actual user ID 
      // Need to complete - I know this is blank 
      return View(); 
     } 

我一直工作在這一天了,我什麼也看不見,我需要做的就是這個工作。任何幫助是極大的讚賞。

非常感謝 nathj07

回答

3

總之,如果我是正確的,你只需要打一個Ajax調用時被點擊的事件,看的文檔,這是相當簡單的...

首先你需要用你的ajax調用一個[Post]方法,我向你展示下面的jquery代碼:

The docs say this.. 
$('#calendar').fullCalendar({ 
    eventClick: function(calEvent, jsEvent, view) { 

     alert('Event: ' + calEvent.title); 
     alert('Coordinates: ' + jsEvent.pageX + ',' + jsEvent.pageY); 
     alert('View: ' + view.name); 

     // change the border color just for fun 
     $(this).css('border-color', 'red'); 

    } 
}); 

$('#calendar').fullCalendar({ 
    eventClick: function(calEvent, jsEvent, view) { 
     $.ajax({ 
      url: _url, 
      type: "POST", 
      cache: false, 
      data: { id= "", }, *//sort out your params here* 
      error: function(xhr, status, error) { 
//handle errors 
      }, 
      success: function(data) { 
//handle sucess here 

      } // end on sucess 
     }); // end ajax call 

    } 
}); 
+0

感謝你。它確實清除了正在發生的事情。現在清理成功,以便顯示相關的視圖。謝謝您的幫助。 – nathj07

+0

@ nathj07:很高興我能幫上忙。 :) – Haroon