2016-04-21 2 views
5

Я использую JsonPatchDocument обновить свои объекты, это хорошо работает, если JSON выглядит следующим образомИспользование .Net Основные Web API с JsonPatchDocument

[ 
    { "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 выглядит так, что исправление не работает. Я считаю, что мне нужно, чтобы преобразовать его с помощью

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

И это должно разобраться, проблема я использую ядро ​​.net так не 100% уверен, где добавить JsonPatchFormatter

ответ

0

Я создал следующие образец контроллера с использованием версии 1.0 для ASP.NET Core. Если я отправить JSON-Patch-Request

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

затем после вызова ApplyTo свойство leadStatus будет изменено. Не нужно настраивать JsonPatchFormatter. Хороший пост в блоге Бен Фостер помог мне в получении более глубокое понимания - 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; } 
} 

Надеется, что это помогает.

+0

thats я посмотрю на это. – R4nc1d