MVC中用户名中的非字母数字字符

时间:2015-10-02 18:18:15

标签: c# asp.net asp.net-mvc asp.net-identity

我成功地在我的用户名中获取了非字母数字字符,我现在遇到的问题是当我尝试将角色分配给用户时它会抛出无效的用户名错误。它说“只能包含字母和数字。

这是我添加的用户名;

public AccountController(UserManager<ApplicationUser> userManager)
    {
        UserManager = userManager;
        var userValidator = UserManager.UserValidator as   UserValidator<ApplicationUser>;
        userValidator.AllowOnlyAlphanumericUserNames = false;
    }

这是我收到错误的地方;

public bool AddUserToRole(string userId, string roleName)
    {
        var um = new UserManager<ApplicationUser>(
            new UserStore<ApplicationUser>(new ApplicationDbContext()));
        var idResult = um.AddToRole(userId, roleName);
        return idResult.Succeeded;

idResult.Erorrs [0] =“用户名J.Blow无效,只能包含字母或数字。

为什么我得到这个。我是否需要在其他地方更改用户名的效果?

提前谢谢。

1 个答案:

答案 0 :(得分:6)

根据您的代码,您正在创建UserManager的新实例,并在AddUserToRole方法中使用该实例。因此,忽略您在控制器中设置的UserManager

如果您重构代码,以便可以在AddUserToRole方法中使用控制器中实例化的代码,那么该代码应该可以正常工作。