【发布时间】:2015-05-17 13:34:49
【问题描述】:
我正在使用嵌套视图模型来显示基于用户角色的视图。
型号:
public class MainVM {
//some properties
public OneVM One {get; set;}
public TwoVM Two {get; set;}
}
public class OneVM {
//properties
}
public class TwoVM {
//properties
}
正如here 所写,只需要发送主模型控制器。我正在使用 Automapper 从收到的模型中映射属性。
控制器:
public ActionResult EditAction(MainVM model){
var item = db.Table.Find(model.Id);
//automapper to map
AutoMapper.Mapper.Map(model.One, item); //does not work
db.Entry(item).State = EntityState.Modified;
db.SaveChanges();
}
这是正确的方法吗?我在这里做错了什么。
更新: 这是我用来从局部视图渲染嵌套视图模型的视图
查看:
@model MainVM
@Html.RenderPartial("_OnePartial", Model.One)
这个答案https://stackoverflow.com/a/6292180/342095 定义了一个 Html 助手,它将生成具有正确名称的局部视图。
【问题讨论】:
-
var result = Mapper.Map<OneVM>(item); -
@FarhadJabiyev
Mapper.Map<OneVM>(item);但您将项目作为来源传递?而源应该是通过参数接收到的model -
您不想将
item转换为OneVM吗? -
@FarhadJabiyev 不,我更新了代码。我想将收到的模型中的属性映射到
item并将收到的更改保存在 db 中 -
你说的不工作是什么意思?
标签: c# asp.net-mvc viewmodel asp.net-mvc-viewmodel