使用ASP.NET API Controller,POST数据为空

时间:2017-11-07 07:14:49

标签: c# asp.net asp.net-mvc

我正在尝试迁移到ASP.NET 6 API控制器,我的JS函数中的POST数据显示为null。

我有以下json请求:

    // searchTerms is an array with 2 properties, Value and Type
    $.ajax({
        type: 'Post',
        contentType: 'application/json',
        dataType: "json",
        data: JSON.stringify({
            searchTerms
        })

如果我将其发布到ASP.NET 6 MVC控制器:

public ActionResult Search(List<SearchTerm> searchTerms)

然后我的searchTerms列表已正确填充。

如果我POST到API控制器

[System.Web.Http.HttpPost]
    [System.Web.Http.Route("api/search")]
    public IHttpActionResult Search([FromBody] List<SearchTerm> searchTerms)

然后searchTerms为空。

我试图更改contentType,dataType,删除stringify函数无济于事。

我试图将签名更改为

public IHttpActionResult Search([FromBody] dynamic value)

看到以下内容,显然我没有正确绑定?

enter image description here

这是我的SearchTerm模型:

public class SearchTerm
{
    public string Value { get; set; }
    public string Type { get; set; }

}

1 个答案:

答案 0 :(得分:4)

而不是:

data: JSON.stringify({
    searchTerms
})

将您的$.ajax电话改为仅使用:

data: JSON.stringify(searchTerms)

您发送的JSON类似于:

{
    "seachTerms": [
        ...
    ]
}

根据我建议的更改,这只是一个简单的JSON数组,它应该适用于您的示例。