将所选月份的开头作为参数传递给控制器​​功能

时间:2015-11-24 21:22:36

标签: jquery asp.net-mvc-5 fullcalendar

我有一个MVC5应用程序,我正在使用Jquery FullCalendar。我必须通过所选月份的开始,以便我可以根据选择的月份/年份从数据库中获取数据,同时单击“日历”的“下一个”和“上一个”按钮。 我的代码如下:

    $(document).ready(function () {

        var calendar = $('#calendar');


       // eventSources: [getCalData()],
        $('#calendar').fullCalendar({

            // calendar.fullCalendar({
            header: {
                left: 'prev,next ',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            },
           // eventSources: [
             //   {
            events: function (start, end, timezone, callback) {

                        $.ajax({
                            url: '/Calendar/GetEvents',
                            // dataType: 'json',
                            data: {
                                // our hypothetical feed requires UNIX timestamps
                                start: start.unix(),

                            },
                              success: function (doc) {
                                  alert(start);
                                  if (doc == null)
                                  {
                                      alert('no data');
                                  }
                                  else
                                  {
                                      alert(doc[0].title);
                                  }
                                  var events = [];
                                  $.each(doc, function (index, event) {
                                      $('#calendar').fullCalendar('renderEvent', event);
                                  });

                              }
                        });
                    }
            });

            $('.fc-next-button').click(function () {
            var date = $("#calendar").fullCalendar('getDate');
           // alert('next is clicked, do something');
            events: '@Url.Action("GetEvents", "Calendar")'
        });

        $('.fc-prev-button').click(function () {
            //alert('prev is clicked, do something');
             @Url.Action("GetEvents", "Calendar")
        });

    });

</script>

在我的控制器中:

public ActionResult GetEvents(double start)
        {

            System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
            dtDateTime = dtDateTime.AddSeconds(start).ToLocalTime();

            DateTime dt = DateTime.Now;
            int year, month;

            if (start != 0)
            {
                year = dtDateTime.Year;
                month = dtDateTime.Month; 
            }
//some more code here
}

显示10月时获取的开始日期是“9月27日”。因为它是显示的第一个日期。但我希望选择月份的开始,即10月1日。 enter image description here

请帮助使用适当的javascript函数。我试过这个: -  start:$('#calendar')。fullCalendar('getView')。visStart但是当visStart不存在时抛出异常。

使用的日历库是2.4.0。文件中使用的脚本标签是: -

 <link href="~/Content/fullcalendar.css" rel="stylesheet" />
 <script src="~/Scripts/jquery-1.11.3.min.js"></script>
    <script src="~/Scripts/moment.min.js"></script>
    <script src="~/Scripts/fullcalendar.js"></script>

1 个答案:

答案 0 :(得分:0)

参数start在事件回调中的值,总是给出日历的开始日期。要获得当前显示月份,您可以使用以下代码。

var _currentdate = $("#calendar").fullCalendar('getDate');
var _date = new Date(_currentdate .year(), _currentdate .month() - 1, 1); //to fetch events from Oct 1st 2015