WEB API-FromBody参数无效



我的身体参数总是为null,这是一个问题。这是控制器:

    [HttpPost]
    public async void Assign([FromUri] int[] sectionIds, [FromBody] int[] ids) ...

已填写URI参数。但是,"实体"参数始终为空。

这是ajax请求:

    return $.ajax(
        {
            url: api_url,
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify({
                "ids": ids
            })
        })

以下是我在网络监视器上的有效负载中看到的内容。

    {"ids":[597,1893]}:

这里可能有什么问题?

编辑:我正在使用API控制器

URL似乎不在正确的位置。您能用contentType尝试以下操作吗?

$.ajax({
   url: API_URL,
   contentType: "application/json",
   method: "POST",
   data: JSON.stringify({"ids": ids}, 
   success: function(result) { return result; }
});

我放弃了使用简单类型。什么都没用,我在这上面浪费了很多时间。

我尝试了与此类似的解决方案: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
                })
        })

您的主体必须是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]
})

最新更新