从Javascript传递KeyValuePair或IDictionary的清单对Web API控制器 [英] Passing List of KeyValuePair or IDictionary to Web Api Controller from Javascript

查看:213
本文介绍了从Javascript传递KeyValuePair或IDictionary的清单对Web API控制器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Web API控制器,​​而我想后两个参数。一个是平坦INT的ID,而另一个是一个IDictionary或类似等效

I have a web api controller to which I would like to post two parameters. One is a flat int ID, and the other is an IDictionary or similar equivalent.

[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'
});

不管是什么我尝试在数据参数(数据:事情数据:'='+事情 ),字典不通过走到API控制器。它是null或有一个假的条目({0,0})。

No matter what I try in the data param (data: things, data: '=' + things), the Dictionary does not come through to the api controller. It is either null or has one bogus entry ({0, 0}).

我也试图发送词典在乌里 - 不走

I have also tried to send the Dictionary in the Uri - no go.

我如何发送词典或键值对的API控制器?

How can I send the dictionary or key value pair to the api controller?

推荐答案

您不需要一个数组 - 你需要一个简单的JS对象(映射到一个字典)。这code应该工作:

You don't need an array - you need a simple JS object (which maps to a dictionary). This code should work:

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'
});

这篇关于从Javascript传递KeyValuePair或IDictionary的清单对Web API控制器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆