我在使用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控制器。我该怎么做?
提前致谢。
答案 0 :(得分:0)
将[FromBody]
属性添加到&#39; businessUnit&#39;参数:
public async Task<string> Put(string id, [FromBody] BusinessUnit businessUnit)
这称为Model Binding,允许将数据从HTTP请求映射到操作方法参数:
[FromBody]
:使用配置的格式化程序绑定请求正文中的数据。根据请求的内容类型选择格式化程序。