0

Comme le titre l'indique, j'effectue une mise à jour réussie, mais il n'enregistre pas les relations comme user-role ou autre. Cela fonctionne très bien quand j'ajoute l'utilisateur (dans mon cas) avec des rôles et tout, mais la mise à jour ne fonctionne pas, c'est seulement avec la relation que tout le reste est mis à jour. J'ai aussi ce problème avec d'autres objets. Quelqu'un a-t-il une idée de la raison pour laquelle il ne sauvera pas la relation si elle est modifiée à la mise à jour? J'ai aussi posté du code, mais j'ai l'impression que ce n'est pas si important ici. Je pense que je manque juste quelque chose de simple.Les relations ne sont pas sauvegardées lors de la mise à jour du modèle en utilisant le code EF4 en premier

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

Dans ce cas, j'ai fini par ajouter le Languagecultures au user directement au lieu du 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); 
     } 

Répondre

0

Je suis toujours MVC débutant mais je pense que TryUpdateModel(user, "User") recherche uniquement les valeurs de publication HTTP précédées de la chaîne "User.". Aussi je pense qu'il utilise directement les données publiées, pas votre instance de viewModel.

Questions connexes