1

行が動的に作成される HTML テーブルのビューがあります。テーブルデータをコントローラーに送信してモデルを更新する最良の方法は何ですか? 現在、以下に示すように、テーブルを JSON に変換しています。

 {"0": ["Job Code","Hours","Rate","Expense"],"1": ["a1","b1","c1","d1"],"2": ["a2","b2","c2","d2"]}

newtonsoft JSON デシリアライズ メソッドを使用しようとしましたが、失敗しました。

この形式の JSON の変換に失敗したと思います。

newtonsoft JSON で受け入れられるテーブルをシリアル化する他の方法はありますか?

4

1 に答える 1

1

JSON の {} は、オブジェクトを作成しようとしていることをデシリアライザーに伝えます。これを念頭に置いて、作成した JSON は単一のオブジェクトを作成し、各プロパティには文字列の配列が含まれます。これではなく、オブジェクトのリストが必要なようです。

この方法を使用して逆シリアル化していますか?

JsonConvert.DeserializeObject<T>(json)

逆シリアル化する型を指定する必要があります。したがって、この場合は次のようになります。

class JobDetails
{
    public string JobCode { get; set; }
    public double Hours { get; set; }
    public double Rate { get; set; }
    public double Expense { get; set; }
}

この型に逆シリアル化するには、JSON.NET JsonConvert 呼び出しは次のようになります。

    [HttpPost]
    public ActionResult Testing(string json)
    {
        var list = JsonConvert.DeserializeObject<List<JobDetails>>(json)
        UPDATE_YOUR_MODEL_HERE(list);

        return WHAT_YOU_WANT_TO_RETURN_HERE;
    }

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

[
    {
        "JobCode": "a1",
        "Hours": 37.5,
        "Rate": 10,
        "Expense": 375
    },
    {
        "JobCode": "a2",
        "Hours": 10,
        "Rate": 20,
        "Expense": 200
    },
    {
        "JobCode": "a3",
        "Hours": 37.5,
        "Rate": 20,
        "Expense": 750
    }
]

これにより、JSON が JobDetails オブジェクトのリストに変換されます。

あるいは、アクション パラメータとして JSON をオブジェクトに解決する場合は、次のようにします。

    [HttpPost]
    public ActionResult Testing(List<JobDetails> list)
    {
        UPDATE_YOUR_MODEL_HERE(list);

        return WHAT_YOU_WANT_TO_RETURN_HERE;
    }

テーブルを正しい JSON にシリアル化するのに問題がある場合は、次の jQuery プラグインを調べてみてください: https://github.com/lightswitch05/table-to-json

于 2013-09-20T13:12:28.797 に答える