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 メソッドのデータを含むオブジェクトを問題なく受け取ります。問題があると思われるのは、配列を渡そうとしたときだけです。

Fidler はこれを JSON として示します。

{"リスト":[{"コード":"ABC","営業日":"2012 年 1 月 31 日"},{"コード":"DEF","営業日":"2012 年 1 月 31 日"}] }

私が間違って何をしているのか、配列を受け取ることができないことを誰かが説明してもらえますか?

4

2 に答える 2

2

ヘッダーを追加します。content-type :application/json

これはうまくいくはずです。

于 2013-02-13T16:32:07.407 に答える
2

JSON が送信するのは基本的にこれです: list と呼ばれるプロパティを持つオブジェクトで、その中にオブジェクトのリストがあります。不要なリダイレクトが 1 つあります。送信するデータからを削除しlist:、リストをパラメータとして直接送信してみてください。

于 2013-02-13T16:29:39.533 に答える