在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(); 
} 
+0

感谢,但我的错误是不及格:传递到字典的模型项的类型为“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