我正在尝试迁移到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)
看到以下内容,显然我没有正确绑定?
这是我的SearchTerm模型:
public class SearchTerm
{
public string Value { get; set; }
public string Type { get; set; }
}
答案 0 :(得分:4)
而不是:
data: JSON.stringify({
searchTerms
})
将您的$.ajax
电话改为仅使用:
data: JSON.stringify(searchTerms)
您发送的JSON类似于:
{
"seachTerms": [
...
]
}
根据我建议的更改,这只是一个简单的JSON数组,它应该适用于您的示例。