LP1*_*P13 4 javascript jquery asp.net-core-mvc coreclr asp.net-core
我有以下代码
控制器动作方法
[HttpPost]
public async Task<IActionResult> Approve(int[] ids)
{
await _service.Approve(ids).ConfigureAwait(false);
return Json("Success.");
}
Run Code Online (Sandbox Code Playgroud)
在客户端,我有以下发布数据
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;
}
Run Code Online (Sandbox Code Playgroud)
问题
在服务器上,在批准操作方法中,ids参数始终为空。
我也尝试将数据发送为
var data = JSON.stringify({ids:getIDs()})
Run Code Online (Sandbox Code Playgroud)
我将 ASP.NET Core 与目标框架 1.1 一起使用。
我在经典的 asp.net 中有相同的代码,它可以工作
似乎您正在发送一个对象,{ids:getIDs()}但在您的控制器中,您期望的是一个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; }
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您希望直接在AjaxPOST 中发送数组
[HttpPost("approve")]
public async Task<IActionResult> Approve([FromBody]int[] ids)
{
await _service.Approve(ids).ConfigureAwait(false);
return Json("Success.");
}
Run Code Online (Sandbox Code Playgroud)
阿贾克斯...
$.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,
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8571 次 |
| 最近记录: |