我的body参数始终为null。 这是控制器:
[HttpPost]
public async void Assign([FromUri] int[] sectionIds, [FromBody] int[] ids) ...
填写URI参数。但是,Body参数始终为空。
这是ajax请求:
return $.ajax(
{
url: api_url,
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({
"ids": ids
})
})
这是我在网络监视器中的有效负载中看到的内容。
{"ids":[597,1893]}:
这里可能出现什么问题?
编辑:我正在使用API控制器
答案 0 :(得分:3)
似乎网址不正确。您可以使用 contentType ?
尝试以下操作$.ajax({
url: API_URL,
contentType: "application/json",
method: "POST",
data: JSON.stringify({"ids": ids},
success: function(result) { return result; }
});
答案 1 :(得分:0)
我放弃了使用简单的类型。什么都没有用,我浪费了很多时间。
我尝试了与此类似的解决方案:http://blog.codenamed.nl/2015/05/12/why-your-frombody-parameter-is-always-null/
但它不适用于数组,数组只有1个值为0。 因此,作为一种解决方法,我创建了一个复杂类型并将其中的2个参数封装在其中。
// Controller code
[HttpPost]
public async void Assign([FromBody] AssignModel) ...
客户端代码
// Client code
return $.ajax(
{
url: api_url,
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({
"Ids": ids,
"SectionIds": sectionIds
})
})
答案 2 :(得分:0)
您的正文必须是json的值,而不是带有参数名称和值的json。 您的情况必须是:
POST http://localhost:5076/api/values HTTP/1.1
User-Agent: Fiddler
Host: localhost:5076
Content-Type: application/json
Content-Length: 7
[1,2]
在javascript中类似:
return $.ajax(
{
url: api_url,
type: 'POST',
contentType: 'application/json',
data: [1,2]
})