C# ASP.NET Core 2.0标识-密码错误消息未显示在视图中
我在使用默认的ASP.NET标识服务时遇到问题。一切正常,但在尝试注册帐户时,如果不满足密码复杂性,则不会显示任何错误消息 我运行了调试器,下面是引发的错误: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 错误消息不会传递到要在密码字段上
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 );
}