1

LocationIdとidを使用してjavascriptでオブジェクトを作成しています。

これらの2つの変数を持つC#のクラスMyClassがあります。

コントローラのメソッドを呼び出すajax呼び出しがあります。

MyMethod(List<MyClass> myObject, int user_id)

私が使う:

traditional: true

ajax呼び出しで。

メソッドが呼び出され、myObjectの長さは正しいですが、LocationIdとidはすべて0です。これが発生する理由とその解決方法を教えてください。

public class MyClass {
     public int LocationId {get; set;}
     public int id {get; set;}
}

Javascript:

var myArray = new Array();
var object = new {
    LocationId: 1;
    id: 2;
}
myArray.push(object);

アヤックス:

$.ajax({
    type: "GET",
    url: "correctUrl",
    traditional: true,
    data: { user_id: 1, myObject: myArray}
});
4

2 に答える 2

2

オブジェクトを作成する Javascript コードが無効です。これを試して:

var myArray = new Array();
var object = {       // No new
    LocationId: 1,   // , instead of ;
    id: 2
}
myArray.push(object);

ちなみに、これを次のように短縮できます。

var myArray = [ { LocationId: 1, id: 2 } ];
于 2012-10-26T08:09:33.640 に答える
0

私はアレックスに同意します。ajax 呼び出しを次のように変更します。

$.ajax({
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json; charset=utf-8;',
    url: "correctUrl",
    data: JSON.stringify( {user_id: 1, myObject: myArray} ),
    // traditional: true,
    error: function (req, status, error) {
        alert(error);
    }
});

traditional: trueここでは不要なので削除しました。
提出タイプを POST に変更しました。シリアル化されたオブジェクトでうまく機能します。
送信されたデータをJSON.stringifyで変換しました

ここからjson2.js をダウンロードできます。詳細については、こちらを参照してください。

C# クラスを次のように変更しました。

public class MyClass
{
    public int LocationId { get; set; }
    public int id { get; set; }
}

[Serializable]
public class jSonObject
{
    public int user_id { get; set; }
    public List<MyClass> myObject { get; set; }
}

MVC アクションは次のようになります。

    [HttpPost]
    public ActionResult MyMethod(jSonObject myData)
    {
        ...
    }

私が提案するもう1つのことは、JsonValueProviderFactoryを実装することです。ここここ
で 多くの有用な情報を見つけることができます。

于 2012-10-26T08:51:00.983 に答える