【问题标题】:Sending date from json ajax to webapi shows value 1/1/0001从 json ajax 向 webapi 发送日期显示值 1/1/0001
【发布时间】:2019-10-04 08:30:13
【问题描述】:

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

这个日期时间字段是使用 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);
    }

任何关于我如何纠正它的想法或建议,都会很棒。

提前谢谢!!!..

【问题讨论】:

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


    【解决方案1】:

    您能否将日期格式更改为以下。这应该解决您的 webapi。

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

    【讨论】:

      【解决方案2】:

      把你的模型改成

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

      };

      或 你想在你的 API 模型中格式化日期 然后请将您的 API DateTime 对象更改为字符串

      【讨论】:

        【解决方案3】:

        将您的日期字符串解析为日期对象,然后再将其转换为 JSON 字符串。在服务器 API 接收此日期字符串作为日期对象。

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

        【讨论】:

          【解决方案4】:

          您应该按以下方式使用MM/DD/YYYY 格式的日期:

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

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

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              猜你喜欢
              • 2017-07-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-12-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多