0

伙计们,我这里有一些逻辑问题。

如果我使用任何其他设置设置 IsApproved true/false,它的值会在数据库中更新。

尽管如此,当我设置新密码时,我正在更改的所有其他设置都不会在服务器中更新。

你可以帮帮我吗:

控制器

public ActionResult EditUser(EditModel model)
    {
        if (ModelState.IsValid)
        {

            try
            {
                MembershipUser user = Membership.GetUser(model.UserName);

                user.IsApproved = bool.Parse(Request.Form.GetValues("IsApproved")[0]);

                if (model.PasswordAccount != null)
                    user.ChangePassword(model.PasswordAccount, model.NewPassword);


                if (model.PasswordQuestion != null)
                    user.ChangePasswordQuestionAndAnswer(model.CurrentPass, model.PasswordQuestion, model.PasswordAnwser);   


                if (model.Email != null)
                {
                    bool emailExist = CheckEmail(model.Email);
                    if (emailExist == false)
                    {
                        user.Email = model.Email;
                    }
                }

                Membership.UpdateUser(user);

                return Content("Usuário Atualizado com Sucesso!");

            }
            catch (Exception e)
            {
                return Content("Usuário não atualizado - Erro: " + e);
            }

        }
        else
        {
            return Content("Model Inválido");
        }

    }

我没有收到错误并通过调试检查我没有收到错误...

4

1 回答 1

0

我很确定这不是最好的方法,但它正在工作,直到我找到更好的解决方案,这是有效的:

try
            {
                MembershipUser user = Membership.GetUser(model.UserName);

                user.IsApproved = bool.Parse(Request.Form.GetValues("IsApproved")[0]);

                if (model.Email != null)
                {
                    bool emailExist = CheckEmail(model.Email);
                    if (emailExist == false)
                    {
                        user.Email = model.Email;
                    }
                }

                Membership.UpdateUser(user);

                user = Membership.GetUser(model.UserName);

                if (model.PasswordAccount != null)
                    user.ChangePassword(model.PasswordAccount, model.NewPassword);


                if (model.PasswordQuestion != null)
                    user.ChangePasswordQuestionAndAnswer(model.CurrentPass, model.PasswordQuestion, model.PasswordAnwser);

                Membership.UpdateUser(user);

                return Content("Usuário Atualizado com Sucesso!");

            }
于 2012-11-23T18:14:13.257 回答