Tag: put

如何使用ASP.Net WebApi重载方法?

我有一种情况,我有两个方法,一个接受poco和另一个poco列表在我的控制器类中: [AcceptVerbs(“PUT”)] [ActionName(“Item”)] public void SaveItem([FromBody] Item item) { m_controller.SaveItem(item); } [AcceptVerbs(“PUT”)] [ActionName(“Items”)] public void SaveItems([FromBody] List items) { m_controller.SaveItem(items); } 我的路由表看起来像: routes.MapHttpRoute(“Item Route”, “api/item/{orderId}”, new { controller = “MyOrder”, action = “Item”, orderId = RouteParameter.Optional }); routes.MapHttpRoute(“Items Route”, “api/items/{orderId}”, new { controller = “MyOrder”, action = “Items”, orderId = RouteParameter.Optional }); 这按预期工作。 但我想重构代码以尝试重载。 我试图重载我的控制器中的方法,只有一个路由但它失败了500错误 […]

获取“实体类型不是当前上下文模型的一部分。”

我在使用web api在asp.net中一次更新我的数据库1列时遇到此问题。 我试图查询PUT只是更新行中的一个值而不是更新那个值并将其余值设置为null。 我在控制器之外做了一个单独的模型来接受更新,所以我可以一次做一个。 当我点击这一行db.Entry(user).State = EntityState.Modified; 在控制器中,它出错了。 有什么建议我可以解决这个问题吗? 这是我在put方法中使用的单独的ViewModel: namespace WebAPI.Models.ViewModels { public class UserViewModel { public string FirstName { get; set; } public string LastName { get; set; } } } 这是我的控制器在我的参数中使用ViewModel调用方法: public HttpResponseMessage PutUser(int id, UserViewModel user) { HttpResponseMessage response; if (db.User.IsInRole(“Admin”)) { try { db.Entry(user).State = EntityState.Modified; db.SaveChanges(); } catch (DbUpdateConcurrencyException) […]