0

私は私のc#コードにこのクラスを持っています:

public class MyItem
    {
        public int LocationId { get; set; }
        public int Value { get; set; }
        public int ddlId { get; set; }
    }

これが私のJs/Ajaxコードです:

var array = new Array();
grid.forEachRow(function (id) {
        var object = {
            LocationId: id,
            Value: someValue,
            ddlId: otherValue
        };
        array.push(object);
    });

$.ajax({
    type: "POST",
    url: "/MyController/SaveTheList",
    data: { myList: array },
    success:function() { }
 });

そして、これがコントローラーのメソッドです。

 [HttpPost]
 public ActionResult SaveTheList(List<MyItem> myList)
 { }

メソッドがヒットし、myListの長さは正確ですが、オブジェクトのすべての値は0です。

4

3 に答える 3

1

POSTボディのAJAXリクエストで正確にデータが送信されているものをフィドラー(または同様のもの)で検査することをお勧めします。

何かが教えてくれる

データ: { myList: 配列 }

jQueryがオブジェクトの配列をシリアル化しようとする方法のため、「Object#1,Object#2,Object#3」のようになります

解決策として、MVC バインダーがデータをバインドできるようにするよりも、youj jQuery リクエストで JSON 文字列としてデータを渡してみてください。

于 2012-10-29T14:45:12.960 に答える
0

JSONリクエストとして送信できます。またstringify、データを送信する必要があります。

$.ajax({
    type: "POST",
    url: "/MyController/SaveTheList",
    contentType: 'application/json',
    data: JSON.stringify({ myList: array }),
    success: function (result) {

    }
});
于 2012-10-29T14:38:58.430 に答える