我对在编辑表单中使用 ViewModels 感到困惑,其中一个属性是可编辑实体,即
ViewModel
Entity
Actions
查看页面顶部的模型声明:
@model MyProject.Models.ViewModel
不是
@model MyProject.Models.Entity
那么什么是表示需要更新的实体属性的最佳方式。我首先开始用它制作一个变量。
Entity myEntity = ViewModel.Entity;
因此,每个表单元素编辑字段可能表示为:
@Html.EditorFor(model => myEntity.Name)
但是,发布操作中的模型绑定参数会发生什么情况?
[HttpPost]
public ActionResult Edit(Entity myEntity)
db.Entities.Attach(myEntity);
db.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified);
db.SaveChanges();
所以这个问题实际上是关于如何处理 ViewModel 中的可编辑属性对象,而不是可以直接作为模型传入的特定实体对象。
答案很可能很简单。
非常感谢提前。
编辑:
关于如何在视图中从 ViewModel 引用域对象的反馈。我发现如果我直接在 lambda 表达式中引用它们,那么模型绑定可以正常工作,因为它可以使用派生的 id 在返回的 ViewModel 周围导航。如果在 View 中使用局部变量,则该变量名称将在 Id 中使用,这会破坏 ViewModel 模型绑定映射。