C# MVC中用户名中的非字母数字字符
我成功地在用户名中获得了非字母数字字符,现在的问题是,当我尝试为用户分配角色时,它抛出了一个无效的用户名错误。它说“只能包含字母和数字 这是我添加的允许用户名中的字符C# MVC中用户名中的非字母数字字符,c#,asp.net,asp.net-mvc,asp.net-identity,C#,Asp.net,Asp.net Mvc,Asp.net Identity,我成功地在用户名中获得了非字母数字字符,现在的问题是,当我尝试为用户分配角色时,它抛出了一个无效的用户名错误。它说“只能包含字母和数字 这是我添加的允许用户名中的字符 public AccountController(UserManager<ApplicationUser> userManager) { UserManager = userManager; var userValidator = UserManager.UserValidato
public AccountController(UserManager<ApplicationUser> userManager)
{
UserManager = userManager;
var userValidator = UserManager.UserValidator as UserValidator<ApplicationUser>;
userValidator.AllowOnlyAlphanumericUserNames = false;
}
publiccountcontroller(UserManager UserManager)
{
UserManager=UserManager;
var userValidator=UserManager.userValidator作为userValidator;
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;
public bool AddUserToRole(字符串userId,字符串roleName)
{
var um=新用户管理器(
新的用户存储(新的ApplicationDbContext());
var idResult=um.AddToRole(userId,roleName);
返回idResult.successed;
idResult.Erorrs[0]=“用户名J.Blow无效,只能包含字母或数字。”
为什么我会收到这个。我需要在其他地方更改用户名的有效性吗
提前谢谢
Clint根据您的代码,您正在创建一个新的
UserManager
实例,并在AddUserToRole
方法中使用该实例。因此,忽略在控制器中设置的UserManager
如果您重构代码,以便可以在
AddUserToRole
方法中使用控制器中实例化的一个实例,那么应该可以使用。根据您的代码,您正在创建一个UserManager
的新实例,并在AddUserToRole
方法中使用该实例。因此忽略UserManager
您在控制器中设置
如果您重构代码以便可以在
AddUserToRole
方法中使用控制器中实例化的代码,那么应该可以使用。um.UserValidator
需要指向您的UserValidator
实例。um.UserValidator
需要指向您的UserValidator
实例。另一种方法是nk。每次你说new SomeClass时,你都会创建它的一个新副本。对一个副本进行更改对另一个副本没有影响。你要么需要将验证器添加到第二个代码段中的代码中,要么将注入控制器的用户管理器传递回服务层(或者第二个代码块所在的位置)我刚刚将验证器添加到新代码段以使其暂时工作。使用此标识框架对我来说仍然有点灰色。谢谢你的帮助。另一种思考方式。每次你说new SomeClass时,你都会创建它的新副本。对一个副本进行更改对另一个副本没有影响。你或者需要添加你的va将lidator添加到第二个代码段中的代码,或将注入控制器的用户管理器传递回服务层(或第二个代码块所在的位置)。我刚刚将验证器添加到新的代码段中,以使其暂时正常工作。使用此标识框工作对我来说仍然有点灰色。感谢您的帮助。