我有一个Web API控制器,我想向其发布两个参数。一个是平面整数ID,另一个是IDictionary或类似的等效符号。
[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或具有一个虚假条目({0,0})。
data: things
data: '=' + things
我还尝试过在Uri中发送字典-不行。
如何将字典或键值对发送到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' });