4

アクションがあります

[HttpPatch]
public IHttpActionResult foo(int id, [FromBody]bool boolVariable)
{
 return Ok();
}

私はまだデバッグ中で、Postman でデータを送信しようとすると、奇妙なエラーが発生します

"Message": "The request is invalid.", "MessageDetail": "パラメーター ディクショナリには、メソッド 'System.Web.Http.IHttpActionResult foo の null 非許容型 'System.Boolean' のパラメーター 'boolVariable' の null エントリが含まれています(Int32, Boolean)' in 'ProjectName.Controllers.NameController'. オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。"

問題は、boolVariable が json 本体にバインドされていないことです...そうです、バインドモデルで問題を簡単に解決できます

  public class FooBindModel
    {
        public bool boolVariable{ get; set; }
    }


public IHttpActionResult foo(int id, FooBindModel bindModel)
{
 return Ok();
}

しかし、jsonの本体から変数をバインドしないのはなぜですか? アクションパラメータに[FromBody]を指定しているのですが…

4

1 に答える 1