[英]Why Fetch Post request with JSON parameter in the body to ASP.NET Core 3.1 WEB API or MVC Controller does not get anything?
[英]Why does the Web API controller get null data from client through POST request?
我有一个AngularJS应用程序,它通过POST请求将对象数组发送到Web API控制器方法。 在服务器上,我具有以下方法定义:
[HttpPost]
[Route("Active")]
public async Task<IHttpActionResult> Post(IList<Media> mediaFiles)
{
try
{
foreach (var file in mediaFiles)
{
await Task.Factory.StartNew(() => PublicData.SetInactiveMedia(file.Id, file.Active));
}
return Ok();
}
catch (ArgumentException e)
{
return BadRequest(e.Message);
}
}
我使用$ resource工厂来与服务器进行交互(但我必须指出的是,我也尝试过使用$ http,但未显示出任何区别)。 这是方法:
var activeMedia = $resource('/api/adminhotspotsmedia/active', { save: { method: 'POST' } });
var setActiveMedia = function (mediaFiles) {
activeMedia.save(mediaFiles);
}
mediaFiles
变量是与服务器上的Media
模型完全匹配的对象数组。
在开发人员控制台中,我可以看到与此请求相关的请求有效负载:
因此,阵列正在尝试到达服务器,但不能。 服务器获取对象列表的空值。 我将补充说我尝试使用:
[FromBody]
标签 dynamic
而不是IList<Media>
IList<object>
而不是IList<Media>
问题仍然存在。 会是什么呢?
默认情况下,模型绑定器将不知道如何处理接口,除非您有一个自定义模型绑定器,该绑定器知道预期的内容和所需的行为。
或者,您可以使用实际的List<Media>
[HttpPost]
[Route("Active")]
public async Task<IHttpActionResult> Post(List<Media> mediaFiles) { ... }
或数组Media[]
[HttpPost]
[Route("Active")]
public async Task<IHttpActionResult> Post(Media[] mediaFiles) { ... }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.