Json字符串找不到控制器方法

时间:2014-08-01 13:26:10

标签: javascript jquery asp.net json asp.net-mvc-5

使用javascript的第三方插件,fullcalendar。其中一个选项是dayClick事件,它的功能非常明显。只要点击一天,它就会执行一次操作。

所以我在这个dayClick函数中得到了ajax,并且我试图将值传递给控制器​​。

$(document).ready(function () {

    $('#calendar').fullCalendar({
        height: 170,
        selectable: true,
        editable: true,
        defaultView: 'basicWeek',
        dayClick: function (date, jsEvent, view) {

            $.ajax(
            {

                url: '@Url.Action("Calendar","Home")',
                type: "GET",
                data: JSON.stringify({ date: date }),
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                cache: false,
                success: function (response) {
                    $("calendarLoad").append($(response));
                    $('#myModal').modal();
                },
                error: function (request, status, error) {
                    alert(error);
                    alert(status);
                    alert(request.responseText);
                }
            });


        }
    });

});

如果它成功通过它应该写出我的局部视图。但它并没有达到这一点。我调试了我的控制器,date参数为空。

   [HttpGet]
    public ActionResult Calendar(string date)
    {

        string[] dateSplit = date.Split(new char[] { 'T' });

        DateTime objDate = Convert.ToDateTime(dateSplit[0]);

        var content = db.Calendars.Where(x => x.startDate == objDate).ToList();



        return PartialView(content);
    }

我在使用dayClick函数后使用fiddler来监控结果,我看到它试图传递JSON数据但结果总是enter image description here

没有结果。

1 个答案:

答案 0 :(得分:0)

应该是:

    data: { date: date },

没有调用JSON.stringify()。 jQuery会将该对象转换为HTTP请求的相应表单。当您传递一个字符串时,它假定您已经完成了转换,因此它只是直接使用该字符串(如您在屏幕截图中突出显示的URL中所示)。