C# 为什么Web API控制器通过POST请求从客户端获取空数据?
我有一个AngularJS应用程序通过POST请求将对象数组发送到Web API控制器方法。在服务器上,我有以下方法定义:C# 为什么Web API控制器通过POST请求从客户端获取空数据?,c#,angularjs,post,asp.net-web-api,angular-resource,C#,Angularjs,Post,Asp.net Web Api,Angular Resource,我有一个AngularJS应用程序通过POST请求将对象数组发送到Web API控制器方法。在服务器上,我有以下方法定义: [HttpPost] [Route("Active")] public async Task<IHttpActionResult> Post(IList<Media> mediaFiles) { try { foreach (var file in mediaFiles) { a
[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);
}
}
mediaFiles
变量是与服务器上的Media
模型完全匹配的对象数组
在开发人员控制台中,我可以看到与请求关联的请求负载:
因此,阵列正在尝试访问服务器,但无法。服务器获取对象列表的空值。我将补充说,我已经尝试使用:
标记[FromBody]
而不是dynamic
IList
而不是IList
IList
问题依然存在。它可能是什么?默认情况下,模型绑定器不知道如何处理接口,除非您有一个自定义模型绑定器,它知道预期的内容和所需的行为 或者,您可以使用实际的
列表
不要使用接口。除非您有一个自定义模型活页夹,否则模型活页夹将不知道如何处理它。它需要绑定到具体的类,因此需要使用具体的对象。因此,要么使用实际的
列表
或数组媒体[]
我之前从列表
切换到了IList
,因为我不了解其行为。现在我试过了你的两个建议,但都不管用。
var activeMedia = $resource('/api/adminhotspotsmedia/active', { save: { method: 'POST' } });
var setActiveMedia = function (mediaFiles) {
activeMedia.save(mediaFiles);
}
[HttpPost]
[Route("Active")]
public async Task<IHttpActionResult> Post(List<Media> mediaFiles) { ... }
[HttpPost]
[Route("Active")]
public async Task<IHttpActionResult> Post(Media[] mediaFiles) { ... }