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

EDIT

、私の代わりにviewmodel.userの直接userLanguageculturesを追加することになった:

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インスタンスではなく、直接投稿されたデータを使用すると思います。

関連する問題