我有一个ViewModel我绑定(bind)到一个 View :
ProductViewModel model = Mapper.Map<Product, ProductViewModel>(product);
return View(model);
View (和 View 模型)用于编辑
Product
,因此ProductViewModel
具有与数据库中的ID对应的ID属性。并将ID发回Controller,我正在 View 中的表单中执行此操作:
@Html.HiddenFor(x => x.Id)
即使这可行-我想知道是否有更好的方法将ID发回Controller?路线值?还是这是一个相当标准的模式/方法?
最佳答案
如果我的GET操作在我的 route 包含id:/Products/Edit/1
,则通常将其保留为路线值:
[HttpPost]
public ActionResult Edit(int id, EditProductViewModel model)
不过,这纯粹是我的偏爱。没有正确或错误的方法来执行此操作。
关于此方法的好处是,您不再需要使用Hidden值来传递它,因为它是URL的一部分。实际上,如果您确实以Hidden值传递了它,我相信它将被忽略。
另外,由于id是路由的一部分,因此您甚至不需要一个单独的参数:
[HttpPost]
public ActionResult Edit(EditProductViewModel model)
public class EditProductViewModel
{
public int Id { get; set; }
}
同样,这纯粹是一种偏爱。