[英]Why Fetch Post request with JSON parameter in the body to ASP.NET Core 3.1 WEB API or MVC Controller does not get anything?
[英]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.