2つのパラメーターをポストしたいWeb APIコントローラーがあります。 1つはフラットなint IDで、もう1つはIDictionaryまたは同等のIDです。
[HttpPost]
public void DoStuff(int id, [FromBody]IDictionary<int, int> things)
{
}
var things = new Array();
things.Push({ 1: 10 }); // tried things.Push({ Key: 1, Value: 10 })
things.Push({ 2: 11 });
$.ajax({
url: '/api/DoStuff?id=' + id,
data: '=' + JSON.stringify(things), // tried what seems like 100 different things here
type: 'POST',
dataType: 'json'
});
データパラメータ(data: things
、data: '=' + things
)、ディクショナリはAPIコントローラに到達しません。 nullであるか、1つの偽のエントリ({0、0})があります。
私はまた、ウリで辞書を送ろうとしました-行きません。
辞書またはキーと値のペアをAPIコントローラーに送信するにはどうすればよいですか?
配列は必要ありません-シンプルなJSオブジェクト(辞書にマップする)が必要です。このコードは機能するはずです:
var things = {};
things['1'] = 10;
things['2'] = 11;
$.ajax({
url: '/api/DoStuff?id=' + id,
data: JSON.stringify(things),
contentType: 'application/json'
type: 'POST',
dataType: 'json'
});
これは私のために働きました:
var settings = [];
settings.Push({ key: "setting01", value: "Value01" });
settings.Push({ key: "setting02", value: "Value02" });
これは本当に古いですが、JSで@cesardanielのようなオブジェクトを作成しました。
var dictionary = [];
dictionary.Push({ key: 1, value: [1,2,3,4,5] });
dictionary.Push({ key: 2, value: [6,7,8,9,0] });
しかし、.netのオブジェクト形状はDictionary<KeyValuePair<int, IEnumerable<int>>
。 Web APIはそれを取得できました。これが将来の読者の役に立つことを願っています!