1

次のjsonオブジェクトがあります。画像で申し訳ありません。

ここに画像の説明を入力

私が持っているjqueryコードは次のようになります。

var data = {
    table: table,
    favour: $("[name='radFavour']:checked").val(),
    data: jsonObj
};

$.ajax({
    url: appDomain + "/Compare/Ajax_Update",
    type: "post",
    dataType: "json",
    data: data
});

C# コードは次のようになります。

[HttpPost]
public void Ajax_Update(CompareFVM fvm)
{
}

FVM には、テーブルと好意の文字列が含まれており、これら 2 つのプロパティのデータが取得されます。

「データ」については、FVMに次のものがあります。

public List<CompareItem> data { get; set; }

そしてアイテム。

public class CompareItem
{
    public int prodId { get; set; }
    public int stageId { get; set; }
    public string value { get; set; }
    public string property { get; set; }
}

List には正しい量の要素 (この場合は 2 つ) がありますが、それぞれに null が設定されています。

したがって、私が投稿しているデータは配列要素ではなく、単一のフィールドです。

何か案は?

4

2 に答える 2

1

ajax の呼び出し中に、オブジェクト名を 'fvm' として渡します (名前は C# コード パラメーターと一致する必要があります)。また、JSON.stringify(data) を使用して json オブジェクトを渡すことを確認してください。

    var fvm = {
        table: table,
        favour: $("[name='radFavour']:checked").val(),
        data: jsonObj
    };

    $.ajax({
        url: appDomain + "/Compare/Ajax_Update",
        type: "post",
        dataType: "json",
        data: JSON.stringify(fvm)
    });
于 2013-06-06T05:20:33.537 に答える
0

私が過去に行った同様のことを基にして、コードを次のように構成します。

// if your C# is
public void Ajax_Update(CompareFVM fvm) {
}

// then your ajax call should be along the lines of
$.ajax({
    data : {
        'data' : [
            { /* compareItem */ },
            { /* compareItem */ },
            // ...
        ]         
    }
})

つまり、C# エンドポイントはオブジェクトを想定しているため、JSON オブジェクトを指定する必要があります。

あなたのC#クラスが

public class CompareFVM {
    public IList<CompareItem> data { get;set; }
}

対応する JSON は次のようになります。

{ 'data' : [] }

どこにオブジェクト.dataの配列がありますか。CompareItem

例えば

{ 
    'data' : [
        {'prodId':'3175','stageId':'19045','value':'TUE','property':'despatchDay'},
        {'prodId':'3175','stageId':'19045','value':'TUE','property':'despatchDay'}
    ]
}
于 2013-06-06T05:24:46.143 に答える