我有以下代码
Controller 操作方法
[HttpPost]
public async Task<IActionResult> Approve(int[] ids)
{
await _service.Approve(ids).ConfigureAwait(false);
return Json("Success.");
}
在客户端我有以下发布数据
var data = JSON.stringify(getIDs())
$.ajax({
type: "POST",
data: data,
url: "approve",
contentType: "application/json; charset=utf-8",
processData: true,
cache: false,
})
.done(function (response, textStatus, jqXHR) {
// do something here
})
.fail(function (jqXHR, textStatus, errorThrown) {
// do something here
})
function getIDs() {
var keys = [];
keys.push(1);
keys.push(2);
keys.push(3);
return keys;
}
问题
在服务器上,在 approve 操作方法中,ids
参数始终为空。
我也试过发送数据
var data = JSON.stringify({ids:getIDs()})
我正在将 ASP.NET Core 与目标框架 1.1 一起使用。
我在经典的 asp.net 中有相同的代码并且它有效
最佳答案
似乎您正在发送一个对象 {ids:getIDs()}
但在您的 Controller 中您期望一个 array
并且您没有指定它将从哪里发送来吧。
像这样更改您的代码。
[HttpPost("approve")]
public async Task<IActionResult> Approve([FromBody]Data data)
{
await _service.Approve(data.ids).ConfigureAwait(false);
return Json("Success.");
}
public class Data
{
public int[] ids { get; set; }
}
或者如果您希望直接在 Ajax
POST 中发送数组
[HttpPost("approve")]
public async Task<IActionResult> Approve([FromBody]int[] ids)
{
await _service.Approve(ids).ConfigureAwait(false);
return Json("Success.");
}
Ajax ...
$.ajax({
type: "POST",
data: JSON.stringify(getIDs()), //I assume getIDs returns an array of integers
url: "/approve",
contentType: "application/json; charset=utf-8",
processData: true,
cache: false,
})
关于javascript - 无法在 asp.net core 中使用 ajax 将 json 发布到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48696992/