在MVC多层编辑记录
问题描述:
我有一个8层的项目 我想编辑一个记录;例如: 存储库层中: 1:在IR库中: IEnumerable GetArea(int id);在MVC多层编辑记录
void Edit(CRM_Area crm);
2:在存储库:
public IEnumerable<CRM_Area> GetArea(int ID)
{
return _db.CrmAreas.Where(x=>x.ID==ID);
}
public void Edit(CRM_Area crmArea)
{
_db.Entry(crmArea).State=EntityState.Modified;
}
和在服务层: 1:在Iservices:
void Delete(int ID);
IEnumerable<_CRM_AreaList> GetArea(int ID);
void Edit(_CRM_AreaEdit crmArea);
2:在服务:
public IEnumerable<_CRM_AreaList> GetArea(int ID)
{
return _areaRepository.GetArea(ID).Select(Mapper.Map<CRM_Area, _CRM_AreaList>);
}
public void Edit(_CRM_AreaEdit crmAreaEdit)
{
var editArea = Mapper.Map<_CRM_AreaEdit, CRM_Area>(crmAreaEdit);
_areaRepository.Edit(editArea);
}
和在控制中的web图层中R:
[HTTPGET] 公众的ActionResult编辑(INT ID){
return View(_areaServices.GetArea(ID));
}
[HttpPost]
public ActionResult Edit(_CRM_AreaEdit crmAreaEdit)
{
_areaServices.Edit(crmAreaEdit);
return RedirectToAction("List");
}
但它不工作。请帮助我 - 如何编辑和我的错误在哪里? 当我点击编辑时,传入字典的模型项目类型为'System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [CRM.Web.Models.CRM_Area,CRM.Web.ViewModel.Area._CRM_AreaList]',但是这个字典需要“CRM.Web.ViewModel.Area._CRM_AreaEdit”类型的模型项目。
答
在您的存储库中尝试保存更改。 请务必记住,编辑后需要保存更改。
public void Edit(CRM_Area crmArea)
{
_db.Entry(crmArea).State=EntityState.Modified;
_db.SaveChanges();
}
感谢,但我的错误是不及格:传递到字典的模型项的类型为“System.Linq.Enumerable + WhereSelectEnumerableIterator'2 [CRM.Web.Models.CRM_Area,CRM.Web.ViewModel。 Area._CRM_AreaList]',但是这个字典需要一个'CRM.Web.ViewModel.Area._CRM_AreaEdit'类型的模型项。 – 2014-10-09 15:03:07