【问题标题】:Posting Array using JSON & JQuery to a C# Web Api back end使用 JSON 和 JQuery 将数组发布到 C# Web Api 后端
【发布时间】:2013-02-13 16:18:06
【问题描述】:

我有以下 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 方法中接收到带有数据的对象没有问题,只有在尝试传递数组时我似乎有问题。

Fidler 将其显示为 JSON:

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

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

【问题讨论】:

    标签: c# ajax json asp.net-web-api


    【解决方案1】:

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

    这应该可行。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-21
        • 1970-01-01
        • 2015-03-22
        • 2018-01-25
        • 1970-01-01
        • 1970-01-01
        • 2015-08-10
        相关资源
        最近更新 更多