引数としてGuidの配列をWebAPIアクションの結果に直接配置すると、リクエストの本文にあるGuidが見つからず、バインドされます。
[HttpPost]
public IHttpActionResult AddStores([FromBody]Guid[] Ids)
{
...
}
idsはnullとして送信されますが、リクエスト本文にGUIDの配列としてidsを含めています。
モデル内にIDを配置した場合にのみ、モデルバインダーは実際にリクエスト本文でIDを検出します。
例えば
public class AddStoresRequest
{
public Guid[] Ids { get; set; }
}
[HttpPost]
public IHttpActionResult AddStoreUser(AddStoresRequest request)
{
...
}
この場合、IDは正しく検出されます。なぜこの異常が発生するのですか?メソッドパラメータでIDを引数として直接使用すると、モデルバインダーが失敗するのはなぜですか?
リクエストを作成するときにモデルを使用しません...リクエストの本文にIdsという配列を配置するだけです。
デフォルトでは、Guid [] IDがリクエストに追加されると、jsonシリアライザーはそれを次のようなものにマップします。
{
"Ids":["58b84557-1899-4354-b5ac-1d97c2b95e1b", "db7106d7-ba8a-44cc-b34d-90bec9b2ca3f"]
}
そのため、2番目のアクションの実装を使用する必要があります。
最初の実装を使用する場合は、次のようなものを本文で送信する必要があります。
["58b84557-1899-4354-b5ac-1d97c2b95e1b", "db7106d7-ba8a-44cc-b34d-90bec9b2ca3f"]
これを実現するには、カスタムシリアル化またはJArrayを使用する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加