加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-core – 在JsonPatchDocument中使用.Net Core Web API

发布时间:2020-12-16 03:49:57 所属栏目:asp.Net 来源:网络整理
导读:我正在使用JsonPatchDocument来更新我的实体,如果 JSON如下所示,这很有效 [ { "op": "replace","path": "/leadStatus","value": "2" },] 当我创建对象时,它将使用Operations节点对其进行转换 var patchDoc = new JsonPatchDocumentLeadTransDetail();patchDo
我正在使用JsonPatchDocument来更新我的实体,如果 JSON如下所示,这很有效

[
  { "op": "replace","path": "/leadStatus","value": "2" },]

当我创建对象时,它将使用Operations节点对其进行转换

var patchDoc = new JsonPatchDocument<LeadTransDetail>();
patchDoc.Replace("leadStatus",statusId); 

{
  "Operations": [
    {
      "value": 2,"op": "replace","from": "string"
    }
  ]
}

如果JSON对象看起来像Patch不起作用.我相信我需要使用它来转换它

public static void ConfigureApis(HttpConfiguration config)
{
    config.Formatters.Add(new JsonPatchFormatter());
}

这应该解决,问题是我使用.net核心所以不是100%肯定在哪里添加JsonPatchFormatter

解决方法

我使用ASP.NET Core 1.0版创建了以下示例控制器.如果我发送您的JSON-Patch-Request

[
  { "op": "replace",]

然后在调用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; }
}

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读