2

我有以下 JQuery:

var dataToSend = {
    list: [{ Code: 'ABC', BusinessDate: '31-Jan-2012' }, { Code: 'DEF', BusinessDate: '31-Jan-2012' }]    
};

$.ajax({
    type: 'POST',
    traditional: true,
    url: '/api/dashboard/post/',
    dataType: 'json',
    data: JSON.stringify( dataToSend), 
    success: function (result) {
        alert('done');
    },
    error: function (result) {
        alert(result);
    }
});

以及服务器上的以下方法:

 [System.Web.Http.HttpPost]
        public void Post(List<MyObject> list)
        {

        }

MyObjects 定义:

public class MyObject
{

    /// <summary>
    /// 
    /// </summary>
    public string Code { get; set; }

    /// <summary>
    /// 
    /// </summary>
    public string BusinessDate { get; set; }

}

该方法被命中,但在集合中没有显示任何结果。如果我将参数更改为:

 [System.Web.Http.HttpPost]
        public void Post(MyObject list)
        {
           // return new JsonResult();
        }

并且只通过集合中的第一项,我在 web api 方法中接收到带有数据的对象没有问题,只有在尝试传递数组时我似乎有问题。

Fiddler 将其显示为 JSON:

{"list":[{"Code":"ABC","BusinessDate":"31-Jan-2012"},{"Code":"DEF","BusinessDate":"31-Jan-2012"}] }

有人可以解释一下我做错了什么,所以我无法接收数组吗?

4

2 回答 2

2

您的 JSON 发送的内容本质上是这样的:一个具有名为 list 的属性的对象,然后其中包含一个对象列表。您有一个不必要的重定向。尝试list:从您发送的数据中删除 并直接将列表作为参数发送。

于 2013-02-13T16:29:39.533 回答
2

添加你的标题。content-type :application/json

这应该有效。

于 2013-02-13T16:32:07.407 回答