Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么Web API控制器通过POST请求从客户端获取空数据?_C#_Angularjs_Post_Asp.net Web Api_Angular Resource - Fatal编程技术网

C# 为什么Web API控制器通过POST请求从客户端获取空数据?

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

我有一个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);
    }
}
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) { ... }