MVC将视图模型映射到域模型(没有automapper)以进行编辑操作

时间:2013-02-25 22:14:46

标签: asp.net-mvc linq entity-framework

我没有反对automapper,但我想先了解手动方法。

我要更新的表是area_list

我的观点模型:

 public class AreaView
{
    public int area_id { get; set; }
    public string area_name { get; set; }
    public string facility_name { get; set; }
    public int facility_id { get; set; }
}

“编辑”视图有两个字段,area_id(隐藏)和area_name

我的编辑控制器(帖子),这是我的问题所在:

 [HttpPost]
    public ActionResult Edit(AreaView e_area)
    {
        if (ModelState.IsValid)
        {
            areaDB.Entry(e_area).State = EntityState.Modified;
            areaDB.SaveChanges();
            return RedirectToAction("List", new { id = e_area.facility_id });
        }
        return View(e_area);
    }

有人可以举例说明如何手动将viewmodel映射到area_list(模型,由实体框架创建)?我是否正确绑定了AreaView视图模型?

现在这将在控制器中,但如果它应该驻留在其他地方,那么所有的耳朵。

谢谢。

1 个答案:

答案 0 :(得分:0)

嗯,如果对其他人有用的话,会在下面发布更多的反复试验。

[HttpPost]
    public ActionResult Edit(AreaView e_area)
    {
        if (ModelState.IsValid)
        {
            // Map the model 

            var area = areaDB.area_list.Where(x => x.area_id == e_area.area_id).FirstOrDefault();
            area.area_name = e_area.area_name;

            areaDB.Entry(area).State = EntityState.Modified;
                areaDB.SaveChanges();

            return RedirectToAction("List", new { id = e_area.facility_id });
        }
        return View(e_area);
    }