2011-07-15 56 views
3

我正在使用jquery full calendar,我试图在事件丢失时保存事件。完整日历+事件+事件丢弃+ Ajax - 不发送日期值

$('calendar').fullCalendar 
      ({ 
       theme: true, 
       defaultView: 'agendaWeek', 
       columnFormat: 
       { 
        week: "ddd" 
       }, 
       header: false, 
       allDaySlot: false, 
       minTime: '6am', 
       maxTime: '9pm', 
       editable: true, 
       droppable: true, 
       drop: function (date, allDay) 
       { // this function is called when something is dropped 

        // retrieve the dropped element's stored Event Object 
        var originalEventObject = $(this).data('eventObject'); 

        // we need to copy it, so that multiple events don't have a reference to the same object 
        var copiedEventObject = $.extend({}, originalEventObject); 

        // assign it the date that was reported 
        copiedEventObject.start = date; 
        copiedEventObject.allDay = allDay; 

        // render the event on the calendar 
        // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/) 
        $('calendar').fullCalendar('renderEvent', copiedEventObject, true); 




       }, 
       eventDrop: function (event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) 
       { 
        var a = event.start; 
        var b = event.end 
        $.ajax 
        ({ 
         url: MyURL, 
         type: 'Post', 
         data: { 'Start': a, 'End': b }, 
         success: function (response) 
         { 

         } 
        }); 
       } 
       )}; 

当我提醒变量“a” &“B”它让我有这些变量的时间。

[HttpPost] 
     public void CreateSlot(string Start, string End) 
     { 

     } 

我知道它是达到这一方法,但它永远不会发送任何参数,他们总是空。

任何想法为什么?

编辑

这似乎是一些与对象或什么的。我试了一下在下拉方法,看看同样的事情正在发生,发现同样的事情

然而,当我这样做

drop: function (date, allDay) 
{ 
     $.ajax 
        ({ 
         url: MyURL, 
         type: 'Post', 
         data: { 'Start': date.getTime() }, 
         success: function (response) 
         { 

         } 
        }); 



} 

它没有问题。所以我想知道如果asp.net mvc无法找到绑定日期对象。我在使用字符串时发现有点奇怪。

回答

0

是否有可能因为你没有列出json作为你的ajax调用中的数据类型而不是以这种方式传递(因此你的方法没有正确地得到parms)?

$.ajax 
    ({ 
     url: MyURL, 
     type: 'Post', 
     data: { 'Start': a, 'End': b }, 
     dataType: 'json',..... 
+0

我可以尝试(值得怀疑,因为这就是我如何做所有其他的人) – chobo2

+0

没有没有工作,看到编辑。 – chobo2

+0

我可能对此有错,但我认为你需要在'a'和'b'之间加引号。例如:data:{'Start':'''+ a +'“','End':''''+ b +'”'},因为它确实是一个字符串,它需要引号json请求。 date.getTime()返回一个数字,因此不需要引用。 –

2

转换日期为C#支持的格式。

eventDrop: function (event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) 
      { 

       var a= $('#calendar').fullCalendar('formatDate', event.start, "yyyy-MM-dd HH:mm:ss"); 

       var b; 

       if (event.end != null||event.end != undefined) { 
        b = $('#calendar').fullCalendar('formatDate', event.end, "yyyy-MM-dd HH:mm:ss"); 
       } 


       $.ajax 
       ({ 
        url: MyURL, 
        type: 'Post', 
        data: { 'Start': a, 'End': b }, 
        success: function (response) 
        { 

        }, 
        error: function (msg) { 
         revertFunc(); 
        }, 
       }); 


      }, 




[HttpPost] 
    public void CreateSlot(DateTime Start, DateTime End) 
    { 

    }