0

就像標題所說,我做了一次成功的更新,但它不會像用戶角色或其他任何方式保存關係。當我添加用戶(在我的情況下)與角色和所有,但更新不起作用,這是唯一的關係,其他所有更新。我也有其他對象的這個問題。有沒有人有任何想法,爲什麼它不會保存關係,如果它更新更改?我也發佈了一些代碼,但我有一種感覺,這裏並不重要。我想我只是想念一些簡單的東西。使用EF4代碼更新模型時不會保存關係

if (ModelState.IsValid) 
      { 
       //hämta användaren och redigera parametrar 
       var user = _userService.GetById(viewModel.User.Id); 

       viewModel.User.Roles = user.Roles; 

       //kolla språken 
       if (viewModel.CultureSelected != null) 
       {      
        foreach (var item in viewModel.CultureSelected) 
        {       
         viewModel.User.LanguageCultures.Add(_languageCultureService.GetById(item));       
        } 
       } 

       //updatera och spara 
       TryUpdateModel(user, "User"); 
       _userService.Save(); 

       ViewData[Message] = ""; 
       return RedirectToAction("Lista"); 
      } 

編輯

在這種情況下,我最終直接添加Languageculturesuser代替viewmodel.user

public ActionResult Redigera(AdminUserAddViewModel viewModel) 
     { 
      //kolla om state är valid 
      if (ModelState.IsValid) 
      { 
       //hämta användaren och redigera parametrar 
       var user = _userService.GetById(viewModel.User.Id);     

       //kolla språken 
       if (viewModel.CultureSelected != null) 
       {      
        foreach (var item in viewModel.CultureSelected) 
        {       
         user.LanguageCultures.Add(_languageCultureService.GetById(item)); 
        } 
       } 

       //updatera och spara 
       TryUpdateModel(user, "User"); 
       _userService.Save(); 

       ViewData[Message] = ""; 
       return RedirectToAction("Lista"); 
      } 

      viewModel.CultureSelectList = CutlureSelectList(_languageCultureService.GetAll()); 
      return View(viewModel); 
     } 

回答

0

我還是MVC初學者,但我認爲, TryUpdateModel(user, "User")僅查找以「User.」字符串爲前綴的HTTP帖子值。另外我認爲它直接使用發佈的數據,而不是你的viewModel實例。