我有一个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; }
}

同样,这纯粹是一种偏爱。

10-04 21:38
查看更多