私は整数とオブジェクトを受け取るコントローラアクションを持っています。その中にはさまざまなプロパティがあり、そのうちの1つはオブジェクトの総称リストです。ポピュレートされたリストを含むアクションにJSONをポストすると、すべてが正しくマップされ、投稿したオブジェクトを含むリストが取得されます。ただし、配列が空の場合、MVCアクションは空のリストのnull intにプロパティをバインドします。空の配列を空の配列にマッピングし、空でない配列にマップしたい場合は、空の配列はコレクションに何もないことを意味し、nullは以前に何かがあるかどうかを確認するためにデータベースをチェックする必要があることを意味しますコレクションに保存されていますが、正しくマップするためには何を変更する必要があるのか分かりません。私たちはJson.Netを使ってオブジェクトを返すためにオブジェクトの直列化を行っていますが、モデルバインディングでオブジェクトを直列化解除するために使用されているとは思われません。Json空の配列MVCでヌルとしてデシリアライズ
オブジェクトが渡される: "{\" のID \ ":137、\" 基準\ ":{\" ObjectsList \ ":[]}}"
要求public class ObjectInList
{
public decimal Value1 { get; set; }
public decimal Value2 { get; set; }
}
public class Criteria
{
public decimal? ANullableNumber { get; set; }
public IList<ObjectInList> ObjectsList { get; set; }
}
JSON
コントローラのアクションは:
public ActionResult ProcessCriteria(int id, Criteria criteria)
{
return Json(_service.ProcessCriteria(id, criteria));
}
これは、基準オブジェクトに私がnullの代わりに、空のリストを取得していますコントローラのアクションです。他のプロパティに対してnullを送信するかどうかは、発生します。オブジェクトがIEnumerableではなくIListであるかどうかは不明です。 (サービスコールをラップするJsonメソッドは、Json.Netを使用してjson.Netを使用してjsonの結果を返すラッパーです。戻り値ではなく、受信した基準オブジェクトにnullが含まれています)。
私はそれを推測しています私は行方不明ですが、私は何かを助けることはできません。ここで
いくつかのコードを入力すれば簡単です。 1行のコードが100語よりも優れています:D –
この場合、合意に達しましたが、私はコントローラ/ベースコントローラ全体と関連するjson投稿を投稿するのに手間がかかります。私は何かを意味する何かを投稿しようとしますが、それまではjsonは空の配列を表示しています。ポストされてモデルにバインドされる前に、Listは空のリストではなくnullです。コントローラの階層の一部は他の開発者によって書かれているので、私は確かに言うことはできませんが、jsonのデシリアライゼーションのオーバーライドされた実装を見つけることができません。 –
この質問を確認する:http://stackoverflow.com/q/14203150/29555と2番目の回答 – marto