Username 'Тест Тест Тест' is invalid, can only contain letters or digits. ASP.NET Core
Пишу свой первый веб-проект на asp.net 6 core mvc с использованием ASP.NET Indentity
Столкнулся с проблемой, когда во время регистрации пользователя, при вводе имени пользователя на русском языке, получаю ошибку
"Username 'Тест' is invalid, can only contain letters or digits"
Пробовал добавлять в Program.cs
в контейнер Identity
параметры задающие набор русских и английских символов, которые разрешены в именах пользователей, таким образом:
builder.Services.AddIdentity<User, IdentityRole>(options =>
{
options.User.AllowedUserNameCharacters =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ0123456789 -._@+";
options.User.RequireUniqueEmail = true;
})
Атрибуты в виде регулярных выражений в классе RegisterViewModel
так же не решили проблему
[Required(ErrorMessage = "Поле обязательно")]
[StringLength(50, MinimumLength = 2)]
[RegularExpression(@"^[a-zA-Zа-яА-ЯёЁ\s]+$",
ErrorMessage = "Можно использовать только русские/английские буквы")]
public string UserName { get; set; }
Не уверен, что проблема в контроллере в методе регистрации
public IActionResult Register(string returnUrl)
{
return View(new RegisterViewModel { ReturnUrl = returnUrl });
}
[HttpPost]
public async Task<IActionResult> Register(RegisterViewModel registration)
{
if (registration.Email == registration.Password)
{
ModelState.AddModelError("", "Логин и пароль не должны совпадать");
}
if (ModelState.IsValid)
{
var user = registration.ToUserRegistration();
var result = await _userManager.CreateAsync(user, registration.Password);
if (result.Succeeded)
{
await _signInManager.SignInAsync(user, false);
return Redirect(registration.ReturnUrl ?? "/Home");
}
else
{
foreach (var error in result.Errors)
{
ModelState.AddModelError("", error.Description);
}
}
}
return View(registration);
}
В какую сторону копать?
Источник: Stack Overflow на русском