javascript - 尝试将 JavaScript 数组传递给我的 ASP.NET Core 控制器但失败
问题描述
一直试图找出为什么我的 AJAX 调用不起作用。我有数据网格,用户可以在其中选择要删除的行;然后按下删除按钮应将这些选定行的 ID 作为数组发送到我的控制器进行处理。然而,我的控制器只接收一个空的 int 数组。
这是我的代码,如果有人可以看到我做错的明显事情,将不胜感激:
@(Html.DevExtreme().Button()
.ID("gridDeleteSelected")
.Text("Purge Selected")
.Height(34)
.Type(ButtonType.Default)
.StylingMode(ButtonStylingMode.Outlined)
.Width(120)
.Disabled(true)
.OnClick("purgeSelectedBatches")
)
我的相关 JavaScript(当用户在数据网格中选择行时调用 selectedLoadContexts 方法):
<script>
var recordsToBePurged;
function selectLoadContexts(data) {
var purgeButton = $("#gridDeleteSelected").dxButton("instance");
purgeButton.option("disabled", !data.selectedRowsData.length);
recordsToBePurged = data;
}
function purgeSelectedBatches() {
var selectedKeys = recordsToBePurged.selectedRowKeys;
console.log("selected keys = " + selectedKeys);
$.ajax({
url: "@Url.Action("PurgeSelected", "Purge")",
type: 'POST',
contentType: "application/json; charset=utf-8",
dataType: 'JSON',
data: JSON.stringify({selectedKeys : selectedKeys}),
success: function() {
var url = '@Url.Action("PurgeSelected", "Purge")' +
'?selectedKeys=' +
selectedKeys;
window.location = url;
}
}).done(function() {
DevExpress.ui.notify("Purging selected batches marked as Do Not Retain: ", "info", 1500);
console.log("Purging selected batches marked as Do Not Retain");
});
}
</script>
我的控制器方法:
[HttpPost]
[Route("[action]")]
public IActionResult PurgeSelected(int[] selectedKeys)
{
//process array of keys and remove selected records
return Ok($" records removed");
}
解决方案
好的,所以我修改了我的 purgeSelectedBatches 方法,剥离了 AJAX 调用,如下所示:
function purgeSelectedBatches() {
var selectedKeys = recordsToBePurged.selectedRowKeys;
console.log("selected keys = " + selectedKeys);
if (selectedKeys.length() > 0) {
$.ajax({
url: "@Url.Action("PurgeSelected", "Purge")",
type: 'POST',
dataType: "json",
data: { selectedKeys: selectedKeys }
}).done(function() {
DevExpress.ui.notify("Purging selected batches marked as Do Not Retain: ", "info", 1500);
console.log("Purging selected batches marked as Do Not Retain");
});
} else {
DevExpress.ui.notify("No records to be purged", "info", 1500);
}
}
我从数据中删除了 contentType 和 JSON.stringify。控制器现在接收整数数组作为包含所选行的键的参数,如预期的那样。
推荐阅读
- sql - Postgresql join sub 或 where sub
- wordpress - “ErrorUtils 发现错误” - 任何 Wordpress Facebook 插件的 Chrome 控制台错误
- python - 如何在 Python 中对列表进行不规则分区?
- python - 使用烧瓶从根目录下载文件
- sql - 将带有时间戳列的 csv 加载到雅典娜表
- javascript - 如何在 React 中将事件处理程序作为道具传递?
- latex - 乳胶算法包错误“缺失\项目”
- javascript - 如何获取触发更改事件的引导滑块的父级
- ios - 如何使用后退按钮更新 tableviewcell?
- google-sheets - 为什么 Google 电子表格中的图片经常更换位置?