C# ASP.NET Core 2.0标识-密码错误消息未显示在视图中

C# ASP.NET Core 2.0标识-密码错误消息未显示在视图中,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我在使用默认的ASP.NET标识服务时遇到问题。一切正常,但在尝试注册帐户时,如果不满足密码复杂性,则不会显示任何错误消息 我运行了调试器,下面是引发的错误: result {Failed : PasswordTooShort,PasswordRequiresDigit,PasswordRequiresUpper,PasswordRequiresUniqueChars} Microsoft.AspNetCore.Identity.IdentityResult 错误消息不会传递到要在密码字段上

我在使用默认的ASP.NET标识服务时遇到问题。一切正常,但在尝试注册帐户时,如果不满足密码复杂性,则不会显示任何错误消息

我运行了调试器,下面是引发的错误:

result  {Failed : PasswordTooShort,PasswordRequiresDigit,PasswordRequiresUpper,PasswordRequiresUniqueChars} Microsoft.AspNetCore.Identity.IdentityResult
错误消息不会传递到要在密码字段上显示的视图中。如何将错误传递到视图中?我可以手动创建modelstate错误,但希望传入预配置的消息

**更新时,我可以拉入错误消息,但试图解决如何将所有消息传递到视图中。现在,视图仅显示第一条错误消息。我是否需要循环查看视图中的所有错误消息才能执行此操作?如果是,最好的方法是什么


我已在我的startup.cs中配置了以下服务:

public void ConfigureServices(IServiceCollection services)
        {

            services.AddDbContext<AppDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));


            services.AddIdentity<IdentityUser, IdentityRole>()
                    .AddEntityFrameworkStores<AppDbContext>();

            services.Configure<IdentityOptions>(options =>
            {
                // Password settings
                options.Password.RequireDigit = true;
                options.Password.RequiredLength = 8;
                options.Password.RequireNonAlphanumeric = false;
                options.Password.RequireUppercase = true;
                options.Password.RequireLowercase = false;
                options.Password.RequiredUniqueChars = 6;
            });
            services.AddTransient<IFeedbackRepository, FeedbackRepository>();
            services.AddTransient<IPieRepository, PieRepository>();
            services.AddMvc();
        }
寄存器的视图配置为:

        public class LoginViewModel
        {
            [Key]
            [Required]
            [Display(Name ="User Name")]
            public string UserName { get; set; }
    
            [Required]
            [DataType(DataType.Password)]
            public string Password { get; set; }
        }
    }
@model LoginViewModel

<h2>Register</h2>

<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="Register" asp-controller="Account" method="post">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="UserName" class="control-label"></label>
                <input asp-for="UserName" class="form-control" />
                <span asp-validation-for="UserName" class="text-danger"></span><br />
                <label asp-for="Password" class="control-label"></label>
                <input asp-for="Password" class="form-control" />
                <span asp-validation-for="Password" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Register" class="btn btn-default" />
            </div>
        </form>
    </div>
</div>
@model LoginViewModel
登记



我无法轻松验证这一点(手头没有编译器/vs),但您可以尝试在再次渲染视图之前以显式方式添加模型错误

if (result.Succeeded)
{
    return RedirectToAction("Index", "Home");
}
else
{
    var error = string.Join( ", ", result.Errors );

    this.ModelState.AddModelError( "Password", error );
}

这类工作。它为我提供了低于价值的东西。它正在获取错误,但不是错误的实际值Microsoft.AspNetCore.Identity.IdentityError、Microsoft.AspNetCore.Identity.IdentityError、Microsoft.AspNetCore.Identity.IdentityError、,Microsoft.AspNetCore.Identity.Identity.IdentityErrorI能够获取描述,但现在在正确显示错误消息方面遇到问题。如果你看一下我更新的代码,我可以输入描述。但是,如果我只是传入多条错误消息,它似乎只会提取第一条。有没有一种方法可以显示所有这些内容?只需
string.Join
description,就像我做的那样。
if (result.Succeeded)
{
    return RedirectToAction("Index", "Home");
}
else
{
    var error = string.Join( ", ", result.Errors );

    this.ModelState.AddModelError( "Password", error );
}