在client.PutAsync中将对象作为参数发送

时间:2017-03-01 03:53:44

标签: asp.net mongodb asp.net-core

我在使用PutAsync时遇到问题。 PutAsync更新对象。以下是我的代码。 (Mongodb数据库)

控制器代码:

     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参数的所有字段都为空,那么为什么它的主键&#34; id&#34;不是null ??

我希望将所有字段作为businessUnit对象中的参数从控制器到api控制器。我该怎么做?

提前致谢。

1 个答案:

答案 0 :(得分:0)

[FromBody]属性添加到&#39; businessUnit&#39;参数:

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

这称为Model Binding,允许将数据从HTTP请求映射到操作方法参数:

  

[FromBody]:使用配置的格式化程序绑定请求正文中的数据。根据请求的内容类型选择格式化程序。