Asp.net mvc 4 Web API、API控制器以及如何更新模型?

Asp.net mvc 4 Web API、API控制器以及如何更新模型?,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,我正在试用MVC4中的API控制器,对使用put更新对象时的最佳实践有一个疑问 我使用RavenDB作为数据存储,并创建了一个自定义MediaTypeFormatter,它有一个JsonDynamicConverter类型的转换器,可以将json序列化和反序列化为动态对象。也就是说,我的API控制器Put方法如下所示 public void Put(string id, dynamic model) {} 此动态对象看起来有点像这样: pageModel = { "id": "pages

我正在试用MVC4中的API控制器,对使用put更新对象时的最佳实践有一个疑问

我使用RavenDB作为数据存储,并创建了一个自定义MediaTypeFormatter,它有一个JsonDynamicConverter类型的转换器,可以将json序列化和反序列化为动态对象。也就是说,我的API控制器Put方法如下所示

 public void Put(string id, dynamic model) {}
此动态对象看起来有点像这样:

pageModel = {
  "id": "pages-2",
  "metadata": {
    "changed": "2012-02-28T17:16:27.323Z"
  },
  "parent": {
    "id": "pages-1",
    "slug": null
  },
  "children": []
}
到目前为止还不错,但现在我需要用id pages-2更新我的实体。
ApiController中不存在UpdateModel,因此我的问题是这样做的最佳/首选方法是什么?

只需调用RavenDB以加载具有适当ID的对象,对其内容进行更改并再次保存即可

无需担心任何UpdateModel调用。这里不适用


请注意一个潜在问题,因为您正在模型中包含id。如果我向那具尸体发出PUT命令会发生什么?根据您希望API的工作方式,您可能应该向我发送错误的请求-响应或类似的消息。

是否有任何理由不在参数中明确说明?我将定义一个UpdateModel并将其作为参数,而不是动态的。然后,它还可以对验证进行建模


ASP.NET WebApi包括处理从JSON和XML转换为控制器方法的输入。我猜在这种情况下,如果我没有遗漏什么的话,那么将自定义mediatypeformatter与使用dynamic相结合是不必要的。

“对其内容进行更改”这正是我的意思,在标准MVC中,我可以使用UpdateModel更新我拥有的任何对象,但我必须在.net中合并两个对象吗?也许我对这个问题的处理方法是错误的,但我认为这是非常直截了当的,我想保存/更新任何对象,我唯一确定的是它实现了相同的接口或基类,我还确定我收到的对象是以某种方式扩展的。