我的ApiController没有收到包装在视图模型中的DateTime对象。

这是我控制器的内容。

public class FlowApiController : ApiController
{
    // GET api/flowapi
    public async Task<IEnumerable<FlowItemViewModel>> PostNewItems(SinceNullableViewModel input)
    {
        var since = input.Since; //since will be null for some reason

        ...

        return something;
    }
}


然后这是我的jQuery AJAX调用。我尝试了许多不同的尝试,但是没有运气。这就是我目前所拥有的。

$.ajax("/api/FlowApi/NewItems", {
    method: "POST",
    data: JSON.stringify({
        Since: new Date()
    })
});


最后,这是我的SinceNullableViewModel

public class SinceNullableViewModel
{
    public DateTime Since { get; set; }
}


我在这里做错了什么?

Chrome发送数据的方式如下:

最佳答案

您非常接近,只需再添加一个标头contentType即可告诉服务器您正在以JSON格式发送:

$.ajax("/api/FlowApi/NewItems", {
    method: "POST",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify({
        Since: new Date()
    })
});

09-19 14:59