我正在使用JsonPatchDocument
来更新我的实体,如果JSON
看起来如下
[
{ "op": "replace", "path": "/leadStatus", "value": "2" },
]
当我创建对象时,它使用Operations
节点
var patchDoc = new JsonPatchDocument<LeadTransDetail>();
patchDoc.Replace("leadStatus", statusId);
{
"Operations": [
{
"value": 2,
"path": "/leadStatus",
"op": "replace",
"from": "string"
}
]
}
如果JSON对象看起来像Patch不起作用。我相信我需要使用
转换它public static void ConfigureApis(HttpConfiguration config)
{
config.Formatters.Add(new JsonPatchFormatter());
}
这应该解决,问题是我使用.net核心所以不是100%确定在哪里添加JsonPatchFormatter
答案 0 :(得分:2)
我使用ASP.NET Core 1.0版创建了以下示例控制器。如果我发送您的JSON-Patch-Request
[
{ "op": "replace", "path": "/leadStatus", "value": "2" },
]
然后在调用ApplyTo之后,属性leadStatus将被更改。无需配置JsonPatchFormatter。 Ben Foster的一篇好博客文章帮助我获得了更加扎实的理解 - http://benfoster.io/blog/aspnet-core-json-patch-partial-api-updates
public class PatchController : Controller
{
[HttpPatch]
public IActionResult Patch([FromBody] JsonPatchDocument<LeadTransDetail> patchDocument)
{
if (!ModelState.IsValid)
{
return new BadRequestObjectResult(ModelState);
}
var leadTransDetail = new LeadTransDetail
{
LeadStatus = 5
};
patchDocument.ApplyTo(leadTransDetail, ModelState);
if (!ModelState.IsValid)
{
return new BadRequestObjectResult(ModelState);
}
return Ok(leadTransDetail);
}
}
public class LeadTransDetail
{
public int LeadStatus { get; set; }
}
希望这有帮助。