2016-04-21 5 views
5

J'utilise JsonPatchDocument de mettre à jour mes entités, cela fonctionne bien si le JSON se présente comme suitEn utilisant .Net base API Web avec JsonPatchDocument

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

Lorsque je crée l'objet qu'il convertit avec le noeud Operations

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

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

si l'objet JSON semble que le correctif ne fonctionne pas. Je crois que je dois le convertir en utilisant

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

et qui devrait le tri, le problème est que je suis en utilisant core .net si sûr pas à 100% où ajouter le JsonPatchFormatter

Répondre

0

J'ai créé ce qui suit exemple de contrôleur utilisant la version 1.0 de ASP.NET Core. Si j'envoie votre demande de correctif JSON

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

puis après avoir appelé ApplyTo la propriété leadStatus sera modifiée. Pas besoin de configurer JsonPatchFormatter. Un poste bon blog par Ben Foster m'a beaucoup aidé à acquérir une compréhension plus solide - 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; } 
} 

Hope this helps.

+0

c'est que je vais y jeter un coup d'oeil. – R4nc1d