从json ajax向webapi发送日期显示值1/1/0001

时间:2019-05-17 03:15:29

标签: jquery datetime asp.net-web-api

我有一个jQuery post ajax调用,在这里我传递一个模型,该模型中定义了包括日期时间字段的属性。

此datetime字段是使用moment.js传递的。在jquery中,当我检查值时,结果很好。但是,当我在WebApi调用中检查相同的值时,相同的日期字段将值显示为1/1/0001。

以下是我的jquery代码:

var model = {
    "ID": 0,
    "DocNumber": $('#txtDocNo').val(),
    "DocDate": moment($('#txtDocDate').val()).format('DD-MM-YYYY'),
    "Amount": $('#txtAmt').val(),
    "Items": arrErrorData
};
function PostSync(targetUrl, model) {
var result = null;
$.ajax({
    url: targetUrl,
    data: JSON.stringify(model),
    dataType: 'json',
    type: 'POST',
    contentType: 'application/json',
    async: true,
    success: function (data) {
        if (data !== undefined) {
            result = data;
        }
    },
    error: function (data) {
        result = data.statusText;
    }       
});

return result;

}

当我在模型中的此处检查日期时,它会显示正确的格式和值。但是,当我签入WebApi方法时,它显示的是1/1/0001。

以下是我的WebApi方法:

public void Post([FromBody]InvoiceDetails InvoiceDetails)
    {
        _itemsbs.Add(InvoiceDetails);
    }

关于如何纠正它的任何想法或建议都很好。

在此先感谢!!! ..

5 个答案:

答案 0 :(得分:0)

您可以将日期格式更改为以下格式吗?这应该可以解决您的webapi。

moment($('#txtDocDate').val()).format('YYYY-MM-DD'),

答案 1 :(得分:0)

将模型更改为

var model = {
"ID": 0,
"DocNumber": $('#txtDocNo').val(),
"DocDate": $('#txtDocDate').val(),
"Amount": $('#txtAmt').val(),
"Items": arrErrorData

};

或 您想在API模型中格式化日期 然后将您的API DateTime对象更改为String

答案 2 :(得分:0)

在将日期字符串转换为JSON字符串之前,将其解析为DATE对象。在服务器API上,将此Date字符串作为Date对象接收。

var model = {
    "ID": 0,
    "DocNumber": $('#txtDocNo').val(),
    "DocDate": new Date($('#txtDocDate').val()),
    "Amount": $('#txtAmt').val(),
    "Items": arrErrorData
};

答案 3 :(得分:0)

您应该通过以下方式为日期使用MM/DD/YYYY格式:

moment($('#txtDocDate').val()).format('MM/DD/YYYY')

这应该在您的API对象中正确填充日期。

答案 4 :(得分:0)

感谢您的回答,我这样解决了它:

var model = {        
    "ID": 0,
    "DocNumber": $('#txtDocNo').val(),
    "DocDate": new Date(moment($('#txtDocDate').val())),
    "Amount": $('#txtAmt').val(),
    "Items": arrErrorData
};