我有一個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