在控制器操作中将jQuery键值对传递给c#字典

在控制器操作中将jQuery键值对传递给c#字典,c#,jquery,asp.net,asp.net-mvc,dictionary,C#,Jquery,Asp.net,Asp.net Mvc,Dictionary,我有一个键值对,我将项目放在点击事件上,如下所示: var product_ids = {}; $(document).on('click', '.chkItem', function () { if ($(this).is(':checked')) { product_ids[$(this).attr('id')] = $(this).attr("price"); } else { delete product_ids[$(this).attr(

我有一个键值对,我将项目放在点击事件上,如下所示:

var product_ids = {};
$(document).on('click', '.chkItem', function () {
    if ($(this).is(':checked')) {
        product_ids[$(this).attr('id')] = $(this).attr("price");
    } else {
        delete product_ids[$(this).attr('id')];
    }
});
$.post("/Controller/GetAllProducts", { ids: product_ids)},StartLoading())
    .done(function (data) {

    })
    .fail(function (data) {

     });
通过这个,我将ItemID值和item的price添加到键值对中

现在,我需要将存储的这些值传递到控制器操作中。我是这样做的:

var product_ids = {};
$(document).on('click', '.chkItem', function () {
    if ($(this).is(':checked')) {
        product_ids[$(this).attr('id')] = $(this).attr("price");
    } else {
        delete product_ids[$(this).attr('id')];
    }
});
$.post("/Controller/GetAllProducts", { ids: product_ids)},StartLoading())
    .done(function (data) {

    })
    .fail(function (data) {

     });
这是我的行动:

public async Task<JsonResult> GetAllProducts(Dictionary<string,string> ids) {
    //trying now to access te values...
}

我做错了什么/

您必须将标题或数据声明为表单,才能从c#的post请求中获取数据,并且您是否检查了问题的哪一边。尝试使用console.log处理json对象,然后检查来自c#

的传入数据,使用一个包含两个属性的模型(用于
id
price
),参数将为
IEnumerable
(但需要对数据进行字符串化,并使用
$.ajax()设置
contentType:'application/json'
函数。请注意,如果
.attr('id')
是一个
int
,那么
字典
可能会起作用(问题是它绑定到
RouteValueDictionary
,其中包含控制器和操作名称的键)@Stephenmueecke好的,试试看^^^@Stephenmueecke好的,我们现在有点进展了,它说里面有0个项目,哈哈…注意它将是
var-product\u-id=[];
并且在循环中-
product\u-id.push({id:x,price:y});