我使用 web api 和 dbContext 在 asp.net mvc 3 中创建了一个简单的待办事项列表应用程序。(客户端使用主干和requirejs)一切正常,但我有点担心如果我选中或取消选中待办事项项,我必须将整个模型发送到服务器。我只想在提交数据时发送“完成”字段。
我应该提一下,我还使用 JsonNetFormatter 来使用 JSON.NET 作为默认序列化程序(此处解释:http: //blogs.msdn.com/b/henrikn/archive/2012/02/18/using-json- net-with-asp-net-web-api.aspx)。
目前这是我更新模型的 api 控制器方法
public HttpResponseMessage Put(Todo todo)
{
_db.Entry(todo).State = EntityState.Modified;
_db.SaveChanges();
return new HttpResponseMessage(HttpStatusCode.NoContent);
}
将其作为 json 数据
{"content":"Pick up milk","done":false,"id":10}
当然这可行,但它正在更新整个模型,它应该只更新 1 个字段。我可以实现只将更改的字段从浏览器发送到服务器,但我不确定 web api 方法应该是什么样子。我正在考虑使用 FormCollection 做一些事情,但这似乎不适用于 web api,因为它似乎试图将提交的表单值直接序列化为 FormCollection 类型,我收到此错误。
Cannot deserialize JSON object (i.e. {"name":"value"}) into type 'System.Web.Mvc.FormCollection'.
如何将模型中 1 个或多个字段的部分更新发送到我的 Web api?我只想将更新的字段发送到服务器,然后从那里只将这些字段更新到数据库。我当然不想在更新之前查询数据库。