Сравните пароль и подтвердите пароль в ASP.Net MVC

Можно ли сравнить текст текстового поля с подтверждением пароля с помощью @Html.PasswordFor(model=>model.Password)?

@using (Html.BeginForm())
{
    <table>

        <tr>
            <td>@Html.LabelFor(model => model.Password)</td>
            <td>@Html.PasswordFor(model => model.Password)</td>
            <td>@Html.ValidationMessageFor(model => model.Password)</td>
        </tr>
        @*Here I want to take "Confirm Password" and want to compare it with "Password" in View(.cshtml only) as
          I have not taken ConfirmPassword in my model.*@
        <tr>
            <td>
                <input type="submit" value="Create" />
            </td>
        </tr>
    </table>              
}

Пожалуйста, предложите любой способ или решение,

Как compare password и confirm password без получения подтверждения пароля в модели. Спасибо....

Ответ 2

измените свою модель, чтобы включить переменную пароля подтверждения

[Required]
public string Password { get; set; }
[Compare("Password")]
public string ConfirmPassword { get; set; }

Ответ 3

Просто добавьте [NotMapped] в начало вашего свойства подтверждения пароля в модели данных

[NotMapped]
[Required(ErrorMessage = "Confirm Password required")]
[CompareAttribute("NewPassword", ErrorMessage = "Password doesn't match.")]        
public string ConfirmPassowrd { get; set; }

Таким образом, он не будет проверять свойство ConfirmPassword в вашей таблице DB

Ответ 4

Просто попробовал [Compare("field_to_compare")], и он также работает в MVC 5.

Ответ 5

Попробуйте написать javascript для сравнения пароля...

Но DataAnnotation является предпочтительным

Ответ 7

Можно сравнить значение текстового поля "Пароль" со значением текстового поля "Подтверждение пароля" как на стороне клиента, так и на стороне сервера. Решения, предоставленные другими, для подтверждения на стороне сервера. Если вы не хотите включать "Подтверждение пароля" в вашу модель, то вам нужно сравнить клиентскую часть. Это можно сделать через Javascript. Либо вы можете вручную написать код для сравнения, либо вы можете включить следующий скрипт в ваш файл .cshtml. (Предполагается, что вы используете Visual Studio для написания кода).

<script src="/Scripts/jquery-3.3.1.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>

Затем вы должны создать поле, как показано ниже:

 <input  data-val="true" data-val-equalto="Password and Confirmation Password must match." data-val-equalto-other="*.Password" data-val-required="Required." id="ConfirmPassword" name ="ConfirmPassword"  type="password" />
<span class="field-validation-valid error" data-valmsg-for="ConfirmPassword" data-valmsg-replace="true"></span>

Это позволит сравнить текстовое поле "Пароль" с текстовым полем "Подтверждение пароля", а также отобразит сообщение об ошибке, если значения в обоих текстовых полях не совпадают, без необходимости писать дополнительный код.

Хотя хорошей практикой является проверка как на стороне клиента, так и на стороне сервера.