リストを引数として受け入れる ActionResult メソッドがあります。
[HttpPost]
public ActionResult MyMethod (List<ClassA> json)
{
...
}
これにより、入力された ClassA オブジェクトの一般的なリストに入ってくる json 文字列がバインドされます。
問題は、入ってくる json が json オブジェクトの配列ではなく、単一の json オブジェクトである場合があることです。
ClassA vs List に直接バインドできるように、これを先取りする方法はありますか? または、私が使用できる他のテクニックはありますか?
JSON が (配列として) 送信される方法は次のとおりです。
var myjsonarray = [{
"ID": "1",
"FirstName": "John",
"LastName": "Doe",
}, {
"ID": "2",
"FirstName": "Jane",
"LastName": "Doe",
}];
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/Home/MyPage",
data: JSON.stringify(myjsonarray),
dataType: 'json'
});
上記のプロセスは正常です。これも機能します:
var myjsonarray = [{
"ID": "1",
"FirstName": "John",
"LastName": "Doe",
}];
しかし、配列にラップされていない単一のオブジェクトとして送信すると:
var myjsonarray = {
"ID": "1",
"FirstName": "John",
"LastName": "Doe",
};
ActionResult メソッドのパラメーターが null です:
json == null