2014-02-13 52 views
7

我正在使用ASP.NET MVC5和Identity 2.0(测试版)。在MVC中更改用户名5

用户可以更改用户名吗?

我想使用UserManager.UpdateAsync方法抛出一个异常。

Regrads,

Fran。

+0

什么是例外抛出? –

回答

-4

也许这是不是很漂亮,但试试这个:

db.Database.ExecuteSqlCommand("update AspNetUsers set UserName=" + NewUserName + " where UserName = " + OldUserName); 
+0

这很脆弱,因为它直接依赖于数据库架构和连接。按照下面的建议使用UserManger更好。 –

+0

更不用说SQL注入的风险了! – Epanoui

8

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

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

var updateResult = await userManager.UpdateAsync(user); 

此方法成功地为我

1

这个工作对我来说:

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