2017-03-01 4 views
0

PutAsyncの使用に問題があります。 PutAsyncはオブジェクトを更新します。以下は私のコードです。 (MongoDBのデータベース)client.PutAsyncでパラメーターとしてオブジェクトを送信します。

コントローラコード:

 stringData = JsonConvert.SerializeObject(businessUnit); //businessUnit is updated object 
    var contentData = new StringContent(stringData, System.Text.Encoding.UTF8, "application/json"); 
    response = client.PutAsync(baseAddress + "/api/BusinessUnit/" + businessUnit.Id, contentData).Result; 

APIコントローラコード:

[HttpPut("{id}")] 
    public async Task<string> Put(string id, BusinessUnit businessUnit) 
    { 
     if (string.IsNullOrEmpty(id)) return "Invalid id !!!"; 
     return await _businessUnitRepository.Update(id, businessUnit); 
    } 

与えられたコードは、良い作品が、私の問題は、APIのコントローラbusinessUnitパラメータは、すべてのフィールドではなく、IDのヌルになりますです。

私の混乱は、businessUnitパラメータのすべてのフィールドがnullの場合、主キー "id"がnullでない理由は何ですか?

businessUnitオブジェクトのパラメータとして、すべてのフィールドをコントローラからapiコントローラに取得したいと考えています。どうしたらいいですか?

ありがとうございます。

答えて

0

は 'businessUnit' パラメータに[FromBody]属性を追加します。これはModel Bindingと呼ばれ、アクションメソッドのパラメータにHTTPリクエストからデータをマッピングすることができますされ

public async Task<string> Put(string id, [FromBody] BusinessUnit businessUnit) 

[FromBody]:使用します要求本体からデータをバインドするために構成されたフォーマッタ。フォーマッタは、要求のコンテンツタイプに基づいて選択されます。

関連する問題