簡體   English   中英

為什么Web API控制器通過POST請求從客戶端獲取空數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM