在MVC多层中编辑记录

时间:2014-10-09 10:09:06

标签: c# asp.net-mvc edit layer asp.net-mvc-controller

我有一个8层的项目 我想编辑一条记录;例如: 在存储库层中: 1:在IRepository中:   IEnumerable GetArea(int id);

    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);

           }

和控制器中的网络层:

[HTTPGET]         public ActionResult Edit(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”类型的模型项。

1 个答案:

答案 0 :(得分:0)

在您的存储库中尝试保存更改。 请记住,您需要在编辑后保存更改。

public void Edit(CRM_Area crmArea)
{
    _db.Entry(crmArea).State=EntityState.Modified;
    _db.SaveChanges();
}