Username 'Тест Тест Тест' is invalid, can only contain letters or digits. ASP.NET Core

Рейтинг: 1Ответов: 0Опубликовано: 12.08.2025

Пишу свой первый веб-проект на 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);
}

В какую сторону копать?

Ответы

Ответов пока нет.