2017-08-21 4 views
1
私は

ASP.NETのWeb API体(ブール値)から2プリミティブ型エラー

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

が、私はまだデバッグ午前アクションを持っていると私はポストマンにいくつかのデータを送信しようとすると、私は奇妙なエラーを取得する

"MessageDetail": "パラメータ辞書には、ヌル入力可能型 'System.Boolean'のパラメータ 'boolVariable'のnullエントリが含まれています。 メソッド 'System.Web .Http.IHttpActionResult foo(Int32、 ブール値) 'in' ProjectName.Controlle rs.NameController '。オプションの パラメータは参照型、NULL可能タイプでなければならない、または オプションのパラメータとして宣言すること。」

問題は、それが私のJSON本体とboolVariableに結合されていないということです...いや私ができますそれはなぜそれが私がアクションパラメータに[FromBody]を指定するのですか?JSONの体から変数を結合しない私を悩ませていますが簡単に...

+0

下の続きを読みますあなたがapiに投稿するときのボディ? –

+0

@marcus {"boolVariable":true} – john

答えて

1

これをバインドモデル

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


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

の問題を解決します実際にあなたが本当に必要なものを使用する必要がある場合です誤った[FromBody]属性です。 Web Apiは、デフォルトで、オブジェクトを処理するときに[FromBody]属性を冗長にするオブジェクトとして要求本体を読み取ろうとします。

リクエスト本体に値の型がある場合は、Webから値の型を取得することをWeb APIに指示する必要があります。その値は[FromBody]です。だから、これはあなたが[FromBody] bool boolVariableを指定し、本体のみでbool値を送信する必要があります解決する

、すなわち

どのように指定すればよいUsing [FromBody]セクション

関連する問題