0

i tried to update my database table some fields

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

ViewModel

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

}

Code is executed successfully but the problem is remaining fields also updated with null value i have 6 columns i want to update 2 columns only. Any help ?

4

1 回答 1

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);
}
于 2013-05-12T07:48:55.997 回答