2014-10-09 5 views
0

8 층 프로젝트가 있습니다. 레코드를 편집하고 싶습니다. 예 : 저장소 계층에서 : 1 : IRepository에서 : 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); 

      } 

및 controlle의 웹 레이어에서 R :

[HttpGet] 공공 ActionResult 편집 (INT ID는) {

 return View(_areaServices.GetArea(ID)); 
    } 

    [HttpPost] 
    public ActionResult Edit(_CRM_AreaEdit crmAreaEdit) 
    { 
     _areaServices.Edit(crmAreaEdit); 
     return RedirectToAction("List"); 
    } 

그러나 그것은 작동하지 않습니다. 제발 도와주세요 - 어떻게 편집 할 수 있습니까? 내 실수는 어디에 있습니까? edit를 클릭하면 사전에 전달 된 모델 항목의 형식은 'System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [CRM.Web.Models.CRM_Area, CRM.Web.ViewModel.Area._CRM_AreaList]'이지만 사전에는 'CRM.Web.ViewModel.Area._CRM_AreaEdit'유형의 모델 항목이 필요합니다.

답변

0

저장소에서 변경 사항을 저장하십시오. 편집 한 후에 변경 사항을 저장해야한다는 점을 항상 명심하십시오.

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 '유형의 모델 항목이 필요합니다. –