Angular/.NETWebAPI项目中的JsonPatch

Angular/.NETWebAPI项目中的JsonPatch,angular,asp.net-web-api,crud,patch,json-patch,Angular,Asp.net Web Api,Crud,Patch,Json Patch,我正在为VisualStudio使用KevinDockx的JsonPatch扩展。我的项目使用.netwebapi(非核心)和Angular(6).Net Web API不支持JsonPatchDocument命名空间,因此需要KevinDock的JsonPatch扩展 我正在阅读他的文档: JsonPatch由两部分组成: 在客户端(API的使用者):JsonPatchDocument/JsonPatchDocument类,用于构建本质上是应用于API端对象的更改集 在(Web)API级别:将

我正在为VisualStudio使用KevinDockx的
JsonPatch
扩展。我的项目使用
.netwebapi
(非核心)和
Angular(6)
.Net Web API
不支持
JsonPatchDocument
命名空间,因此需要KevinDock的
JsonPatch
扩展

我正在阅读他的文档:

JsonPatch
由两部分组成:

在客户端(API的使用者):JsonPatchDocument/JsonPatchDocument类,用于构建本质上是应用于API端对象的更改集

在(Web)API级别:将这些更改应用于对象的ApplyTo方法

但是我在理解第1部分时遇到了困难,他在客户机上构建了一个JsonPatchDocument类。在我的例子中,我假设这意味着我需要在数据库中的某个地方构建这个
JsonPatchDocument
。此步骤的代码为:

JsonPatchDocument<DTO.Expense> patchDoc = new JsonPatchDocument<DTO.Expense>();
patchDoc.Replace(e => e.Description, expense.Description);

// serialize
var serializedItemToUpdate = JsonConvert.SerializeObject(patchDoc);

// create the patch request
var method = new HttpMethod("PATCH");
var request = new HttpRequestMessage(method, "api/expenses/" + id)
{
    Content = new StringContent(serializedItemToUpdate,
    System.Text.Encoding.Unicode, "application/json")
};

// send it, using an HttpClient instance
client.SendAsync(request);
JsonPatchDocument patchDoc=新的JsonPatchDocument();
patchDoc.Replace(e=>e.说明、费用.说明);
//连载
var serializedItemOutpDate=JsonConvert.SerializeObject(patchDoc);
//创建补丁请求
var方法=新的HttpMethod(“补丁”);
var请求=新的HttpRequestMessage(方法“api/expenses/”+id)
{
内容=新的StringContent(SerializedItemOutput日期,
System.Text.Encoding.Unicode,“应用程序/json”)
};
//使用HttpClient实例发送它
client.SendAsync(请求);

但是,我不确定如何在我的Angular代码中实现这部分代码,或者我是否正确地解释了这部分指令。例如,假设我已经通过NuGet package manager控制台在我的API上安装了
JsonPatch
,那么我如何从Angular(
JsonPatchDocument patchDoc=new JsonPatchDocument();
)引用JsonPatchDocument,因为Angular没有此安装?是否有人在一个角度项目中使用过
JsonPatch
,足以为我解释文档的这一部分?

嘿,伙计,你有没有找到解决方案,或者只是使用[FormBody]方法?嗨@Dash,不幸的是,JsonPatch太复杂了,没有足够的文档满足我们的需要。我们最终使用了标准的PUT和POST请求,完全放弃了补丁请求。感谢更新。我目前正在实现与您的需求类似的功能,并完成了以下链接中提到的操作。