public IActionResult Put(int id, [FromBody] TodoModification todo) { if (todo == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var model = TodoService.Current.Todos.SingleOrDefault(x => x.Id == id); if (model == null) { return(NotFound()); } model.TdName = todo.TdName; model.TdTime = todo.TdTime; //return Ok(model); return(NoContent()); }
public IActionResult Patch(int id, [FromBody] JsonPatchDocument <TodoModification> patchDoc) { if (patchDoc == null) { return(BadRequest()); } var model = TodoService.Current.Todos.SingleOrDefault(x => x.Id == id); if (model == null) { return(NotFound()); } //创建一个 TodoModification var toPatch = new TodoModification { TdName = model.TdName, TdTime = model.TdTime }; //将 patchDoc 添加 patchDoc.ApplyTo(toPatch, ModelState); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } //再次手动验证(防止非法修改)eg : [ { "op":"remove", "path":"/tdName" } ] TryValidateModel(toPatch); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } model.TdName = toPatch.TdName; model.TdTime = toPatch.TdTime; return(NoContent()); }