在控制器操作中将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});