我有一个viewmodel我绑定到一个视图:
Productviewmodel model = Mapper.Map<Product,Productviewmodel>(product); return View(model);
视图(和视图模型)用于编辑产品,因此Productviewmodel具有与数据库中的ID对应的ID属性.
并将ID发回控制器我在视图中以我的形式执行此操作:
@Html.HiddenFor(x => x.Id)
解决方法
如果我有一个GET操作,其中包含我的路由中的ID:/ Products / Edit / 1,那么我通常将其保留为路由值:
[HttpPost] public ActionResult Edit(int id,EditProductviewmodel model)
这个方法的好处是你不再需要使用隐藏值传递它,因为它是URL的一部分.实际上,如果你确实用隐藏值传递它,我相信它会被忽略.
或者,由于id是路由的一部分,因此您甚至不需要具有单独的参数:
[HttpPost] public ActionResult Edit(EditProductviewmodel model) public class EditProductviewmodel { public int Id { get; set; } }
同样,这纯粹是一种偏好.