我有一个包含复选框的网格。我们设法使用GetCheckProduct()函数正确获取All ChecksRecord,问题是如何在点击AddSelectedProduct时从GetCheckProduct()传递给控制器选定的产品。
到目前为止,这是代码。谢谢
<script>
var getCheckProduct = function () {
var grid = $('#Product').data().kendoGrid;
var elem = grid.element;
var data = $('#Product').data().kendoGrid.dataSource.data();
var count = 0;
var res = [];
var checkbox = elem.find(".chkbx").each(function () {
var t = $(this);
if (t.is(":checked")) {
res.push(data[count].TRN);
}
count += 1;
});
return res;
};
$("#AddSelectedProduct").on("click", function () {
$.ajax({
type: 'POST',
url: '@(Url.Content("~/ProdDetails/AddSelectedProduct/"))',
data: {
"selectedProduct": getCheckProduct()
}
});
return false;
});
</script>
问题是selectedProduct没有传递给控制器。
Controller:
public ActionResult AddSelectedConsumer(string[] selectedProduct, Guid ReferralListID)
{
UpdateConsumer(selectedProduct);
return Json(null);
}
答案 0 :(得分:0)
我认为您需要使用JSON.stringify([getCheckProduct())
字符串化数据:
$.ajax({
type: "POST",
url: '@(Url.Content("~/ProdDetails/AddSelectedProduct/"))',
datatype: "json",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify([getCheckProduct())
});
或将ajax请求的traditional
选项设置为true:
$.ajax({
type: "POST",
url: '@(Url.Content("~/ProdDetails/AddSelectedProduct/"))',
datatype: "json",
traditional: true,
data: { 'selectedProduct': getCheckProduct() }
});
但是,您的控制器操作还有第二个参数,因此根据您的配置,如果不在您发送的数据中,则可能无法调用它。