使用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数据但结果总是
没有结果。
答案 0 :(得分:0)
应该是:
data: { date: date },
没有调用JSON.stringify()
。 jQuery会将该对象转换为HTTP请求的相应表单。当您传递一个字符串时,它假定您已经完成了转换,因此它只是直接使用该字符串(如您在屏幕截图中突出显示的URL中所示)。