0
我的控制器中的[HttpPost]編輯方法出現問題,它不保存對userrole所做的更改,這很奇怪,因爲create方法正在工作它使用的是相同的輔助方法,這是我的代碼:更新/編輯實體時多對多不保存
視圖模型:
public class UserViewModel
{
public User User { get; set; }
public virtual ICollection<AssignedUserRole> UserRoles { get; set; }
public virtual List<Company> Companies { get; set; }
}
控制器:
[HttpPost]
public ActionResult Edit(UserViewModel userViewModel)
{
if (ModelState.IsValid)
{
var user = userViewModel.User;
user.UserRoles.Clear();
AddOrUpdateRoles(user, userViewModel.UserRoles);
context.Entry(user).State = EntityState.Modified;
context.SaveChanges();
return RedirectToAction("Index");
}
return View(userViewModel);
}
helper方法
private void AddOrUpdateRoles(User user, ICollection<AssignedUserRole> assignedUserRoles)
{
foreach (var assignedRole in assignedUserRoles)
{
if (assignedRole.Assigned)
{
var userRole = new UserRole { Id = assignedRole.UserRoleId };
context.UserRoles.Attach(userRole);
user.UserRoles.Add(userRole);
}
}
}
一切都在用戶對象被除UserRole的更新,因爲我調試,並通過做一步,我不能發現問題,我可以看到該用戶具有分配的正確/更新的角色。