0

我使用 jquery ui 控件。
我有一个日期选择器,我检索日期如下:

var sDate = $("#startDatePicker").datepicker('getDate'); 
var eDate = $("#endDatePicker").datepicker('getDate');

作为 sDate 返回的示例

Tue Aug 14 00:00:00 UTC+0200 2012

我从网页调用代码如下

$.ajax(
{
  url: '@Url.Action("LogsView","Home")',
  type: 'POST',
  data: { startDate: sDate, endDate: eDate },
  success: function(result) { alert(result); },                        
  error: function(param1) { alert(param1); }
});

我有一个具有以下操作的控制器

public JsonResult LogsView(DateTime startDate, DateTime endDate)
{   
  var items = FetchItems(startDate, endDate);
  return Json(items, JsonRequestBehavior.AllowGet);
}

当我运行它时,返回的部分错误如下(在 fiddler 中竞争时):

The parameters dictionary contains a null entry for parameter 'startDate' of non-nullable type 'System.DateTime' for method 'System.Web.Mvc.JsonResult LogsView(System.DateTime, System.DateTime)' ..

我检查了通过提琴手发送的参数,如下所示startDate=&endDate=

任何人都知道如何正确格式化和传递日期(我认为这是错误所在)?

4

3 回答 3

4

我需要添加.toJSON()$("#startDatePicker").datepicker('getDate')
$("#startDatePicker").datepicker('getDate').toJSON()

如果您在功能上遇到错误,请toJSON()尝试

var sd = $("#startDatePicker").datepicker('getDate');
var sDate = $.datepicker.formatDate('dd-MM-yy', sd);
于 2012-08-28T10:09:57.837 回答
0

在将日期发送到 $.ajax() 方法之前,您需要将其转换为字符串。

于 2012-08-28T10:08:40.240 回答
0

您可以使用此方法将日期转换为字符串:

function ShowUTCDate()
{
    var dNow = new Date();
    var utc = new Date(dNow.getTime() + dNow.getTimezoneOffset() * 60000);
    var utcdate= (utc.getMonth()+1) + '/' + utc.getDate() + '/' + utc.getFullYear() + ' ' + utc.getHours() + ':' + utc.getMinutes();
    return utcdate;
}
于 2017-04-06T13:21:58.303 回答