2013-05-12 47 views
0

我試圖更新我的數據庫表中的某些字段MVC Automapper更新

[HttpPost] 
    [ValidateAntiForgeryToken] 

    public ActionResult Edit(MemberTasks membertaskdetails) 
    { 
     if (ModelState.IsValid) 
     { 

      MemberTasks Mtasks = db.MemberTask.Find(membertaskdetails.id); 
      Mtasks.Taskid = membertaskdetails.Taskid; 
      Mtasks.status = membertaskdetails.status; 
      AutoMapper.Mapper.Map(membertaskdetails,Mtasks); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(membertaskdetails); 
    } 

視圖模型

public class MemberTasks 
{ 
    [Key] 
    [Display(Name = "ID")] 
    public int id { get; set; } 
    [Display(Name = "Task ID")] 
    public int Taskid { get; set; } 
    [Display(Name = "Status")] 
    public int status { get; set; } 
    [Display(Name = "Created By")] 
    public string createdby { get; set; } 
    [Display(Name = "Team Lead")] 
    public string TeamLead { get; set; } 
    [Display(Name = "Note")] 
    public string Note { get; set; } 
    [Display(Name = "Members")] 
    public string Membersid { get; set; } 

} 

代碼執行成功,但問題是剩餘的字段也更新爲空值,我有6列我只想更新2列。 有什麼幫助嗎?

回答

2

您在AutoMapper中使用的源和目標對象是相同類型的(MemberTasks)。這不是AutoMapper應該如何使用的。 AutoMapper用於在域模型和視圖模型之間進行映射。

所以,你必須有一個包含從視圖傳遞的性能視圖模型:

public class MemberTasksViewModel 
{ 
    public int Id { get; set; } 
    public int Taskid { get; set; } 
    public int Status { get; set; } 
} 

然後:

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Edit(MemberTasksViewModel viewModel) 
{ 
    if (ModelState.IsValid) 
    { 
     MemberTasks domainModel = db.MemberTask.Find(viewModel.Id); 
     Mapper.Map(viewModel, domainModel); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
    return View(viewModel); 
} 
+0

感謝您的回覆我試過,但我得到了錯誤缺少類型映射配置或不支持映射。 映射類型: UpdateMemberTasks - > MemberTasks TaskManager.Models.UpdateMemberTasks - > TaskManager.Models.MemberTasks 目標路徑: MemberTasks 來源值: TaskManager.Models.UpdateMemberTasks – user1127905 2013-05-12 08:19:29

+1

是的,你需要定義一個映射首先使用'Mapper.CreateMap'方法在你的模型之間。 – 2013-05-12 08:24:57

+0

謝謝,我忘了再次更新CreateMap以獲得支持。現在其工作正常 – user1127905 2013-05-12 08:28:04