0

タイトルが言うように、更新は成功しましたが、ユーザーロールなどの関係は保存されません。ユーザー(私の場合)をロールとすべてで追加するとうまく機能しますが、更新は機能しません。それは、他のすべてが更新される関係のみです。他のオブジェクトにもこの問題があります。更新時に変更された場合、リレーションが保存されない理由を知っている人はいますか? コードもいくつか投稿しましたが、ここではそれほど重要ではないと感じています。シンプルなものが欠けているだけだと思います。

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

1 に答える 1

0

私はまだMVCの初心者ですがTryUpdateModel(user, "User")、「」文字列で始まるHTTPPOST値のみを検索すると思いUser.ます。また、viewModelインスタンスではなく、直接投稿されたデータを使用していると思います。

于 2011-02-09T08:50:56.193 に答える