Why does the console display validation errors but ValidationSummary does not display them? How to make ValidationSummary display User Validation failed?
RegisterView Code
@Html.ValidationSummary()
<h4>Name</h4>
@Html.TextBoxFor(model => model.Name)
<h4>Email</h4>
@Html.TextBoxFor(model => model.Email)
<h4>Pasword</h4>
@Html.TextBoxFor(model => model.Pasword)
<h4>ConfirmPasword</h4>
@Html.TextBoxFor(model => model.ConfirmPasword)
<h4>RememberMe</h4>
@Html.CheckBoxFor(model => model.RememberMe)
<button type="submit">Register</button>
photo of the Controller
Controller code
[HttpPost("Register")]
public async Task<ActionResult> Register(RegisterViewModle modle)
{
if (!ModelState.IsValid) { return View(modle); }
var user = new ApplicationUser { Email = modle.Email, UserName = modle.Name };
var result = await _UserManeger.CreateAsync(user, modle.Pasword);
var roleResult = await _UserManeger.AddClaimAsync(user, new Claim(ClaimTypes.Role, "User"));
if (result.Succeeded & roleResult.Succeeded)
{
await _SignInManager.SignInAsync(user, isPersistent:false);
return Redirect("https://localhost:7195/user");
}
return View(modle);
}
If you cannot see the error when debugging, maybe try the code in your UserValidator as below:
List<IdentityError> errors = new List<IdentityError>();
if (userManager.FindByEmailAsync(user.Email) != null)
{
errors.Add(new IdentityError { Code = "EmailFilad", Description = "Эта почта уже используется" });
}
if (errors.Count == 0)
{ return IdentityResult.Success; }
else return IdentityResult.Failed(errors.ToArray());
If you want to see the error in the view, you can add below code in your Register action .
[HttpPost]
public async Task<ActionResult> Register(RegisterViewModle modle)
{
if (!ModelState.IsValid) { return View(modle); }
var user = new ApplicationUser { Email = modle.Email, UserName = modle.Name };
var result = await _UserManeger.CreateAsync(user, modle.Pasword);
var roleResult = await _UserManeger.AddClaimAsync(user, new Claim(ClaimTypes.Role, "User"));
if (result.Succeeded & roleResult.Succeeded)
{
await _SignInManager.SignInAsync(user, isPersistent:false);
return Redirect("https://localhost:7195/user");
}
foreach (var error in result.Errors)
{
ModelState.AddModelError(string.Empty, error.Description);
}
return View(modle);
}
Result: