首页 > 解决方案 > 如何在 ASP.NET Core v3 中使用 Identity 返回所有错误描述

问题描述

我正在学习在 asp.net 核心中使用身份登录/注册,我正在尝试在注册时添加错误,这是我的代码

if (ModelState.IsValid)
{
    var user = new IdentityUser
                {
                    UserName = model.Username,
                    Email = model.Email,
                };

    var result = await _userManager.CreateAsync(user, model.Password);

    if (result.Succeeded)
    {
        var signInresult = await _signInManager.PasswordSignInAsync(model.Username, model.Password, false, false);

        if (signInresult.Succeeded)
        {
            return RedirectToAction("Index");
        }
    }
    else
    {
        List<IdentityError> errorList = result.Errors.ToList();
        string errors = "";

        foreach (var error in errorList) 
        {
            errors = errors + error.Description.ToString();
        }

        return Content(errors);
    }

    return Redirect("Index");
}

这里的问题是errorList中的错误是一个一个返回,而不是像所有的一样,我得到“用户名被占用”或“密码必须包含一个字母”。但不是一次全部。我该如何解决?

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

解决方案


这里的问题是errorList中的错误是一一返回的,而不是全部返回,

如果我理解正确,您不想使用 foreach 来一一获取错误,您可能会得到所有错误,如下所示

else
{
    List<IdentityError> errorList = result.Errors.ToList();
    var errors = string.Join(", ", errorList.Select(e=>e.Description));

    return Content(errors);
}

推荐阅读