我有一个AngularJS应用程序通过POST请求向Web API控制器方法发送对象数组。在服务器上,我有以下方法定义:为什么Web API控制器通过POST请求从客户端获取空数据?
[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);
}
}
我使用$资源工厂为了与服务器进行交互(但我不得不提,我也试图与$ 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 []' –
Nkosi