私は、AngularJSアプリケーションがオブジェクト配列をPOSTリクエストを通じてWeb APIコントローラメソッドに送信しています。サーバーでは、私は次のメソッドの定義を持っている:Web APIコントローラがPOSTリクエストを通じてクライアントからnullデータを取得するのはなぜですか?
[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<Media>
IList<object>
。どうなり得るか?
インタフェースを使用しないでくださいを使用することができます。あなたがカスタムモデルバインダーを持っていない限り、モデルバインダーはそれをどうするべきか分かりません。バインドする具体的なクラスが必要なので、具体的なオブジェクトを使用してください。実際の 'List'または 'Media [] 'の配列 –
Nkosi