9

我正在使用 ASP.NET MVC5 和 Identity 2.0(测试版)。

用户可以更改用户名吗?

我正在尝试使用 UserManager.UpdateAsync 方法引发异常。

研究生,

弗兰。

4

3 回答 3

12

是的,可以使用 UpdateAsync 方法,但您需要确保同时更新电子邮件和用户名字段。

var user = userManager.FindById(userId);
user.Email = email;
user.UserName = email;

var updateResult = await userManager.UpdateAsync(user);

这种方法对我来说成功

于 2015-04-15T10:58:32.580 回答
3

这对我有用:

 public async Task<ActionResult> ChangeUsername(string value)
        {
            if (UserManager.Users.Where(x => x.UserName == value).FirstOrDefault() == null) //chk for dupes
            {
                var user = UserManager.FindById(User.Identity.GetUserId());
                user.UserName = value;
                var updateResult = await UserManager.UpdateAsync(user);
                store.Context.SaveChanges();

                await SignInAsync(user,true);//user is cached until logout so do this to clear cache                
                return Content("true");
            }
            throw new HttpException(500, "Please select a different username");
        }
于 2015-07-24T05:44:21.780 回答
-5

也许它不是那么漂亮,但试试这个:

db.Database.ExecuteSqlCommand("update AspNetUsers set UserName=" + NewUserName + " where UserName = " + OldUserName);
于 2014-03-20T05:50:35.843 回答