Попытка проверить поле пароля в ASP.Net Core.Я хотел бы разделить сообщения, если пароль не соответствует регулярному выражению и если он не соответствует определенной длине.
До сих пор я пробовал это на моей модели данных:
[Required(ErrorMessage = "Le champs est obligatoire")]
[StringLength(30, MinimumLength = 10, ErrorMessage = "Password must contain from 10 to 30 characters")]
[RegularExpression("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d.*)(?=.*\\W.*)[a-zA-Z0-9\\S]{10,30}$", ErrorMessage ="Password must contain at least 1 uppercase, 1 lowercase, 1 digit and 1 special character")]
Но кажется, что атрибут StringLength никогда не достигается.
Если я пытаюсь использовать другой пароль, например, например: P@ss1!
Я получаю сообщение об ошибке из атрибута Regex, но не из атрибута StringLength.
Конечно, если я удаляю атрибут RegularExpression, атрибут StringLength работает просто отлично.
Любая подсказка по этому поводу была бы хороша:)
EDIT:
<form asp-controller="Account" asp-action="EnterNewPassword" method="post">
@Html.AntiForgeryToken()
<input type="hidden" asp-for="ReturnUrl" />
<input asp-for="Token" type="hidden" />
<input asp-for="Email" type="hidden" />
<div class="col-12">
<div class="form-group">
<label asp-for="Password">Nouveau mot de passe</label>
<div class="password">
<input asp-for="Password" type="password" class="form-control" /><i class="icon-eye" data-js-showPassword=""></i>
<span asp-validation-for="Password" class="validation-error"></span>
</div>
</div>
</div>
<div class="col-12">
<div class="form-group">
<label asp-for="ConfirmPassword">Confirmation du mot de passe</label>
<div class="password">
<input asp-for="ConfirmPassword" type="password" class="form-control" /><i class="icon-eye" data-js-showPassword=""></i>
<span asp-validation-for="ConfirmPassword" class="validation-error"></span>
</div>
</div>
</div>
<div class="col-12 text-center">
<button type="submit" class="btn">Mettre à jour</button>
</div>
</form>