Сравните пароль и подтвердите пароль в 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 без подтверждения свойства пароля в Model. Спасибо....


person Vishal Hirapara    schedule 13.02.2014    source источник


Ответы (6)


Используя Compare DataAnnotation, будет легко сравнить пароль, но если модель генерируется из базы данных, используйте NotMapped, Свойства NotMapped в Entity Framework с использованием стратегии Code-First

[Required]
public string Password { get; set; }

[NotMapped] // Does not effect with your database
[Compare("Password")]
public string ConfirmPassword { get; set; }
person Sender    schedule 13.02.2014
comment
Можно ли сравнить текст текстового поля подтверждения пароля с @Html.PasswordFor(model=›model.Password)? - person Vishal Hirapara; 13.02.2014

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

[Required]
public string Password { get; set; }
[Compare("Password")]
public string ConfirmPassword { get; set; }
person COLD TOLD    schedule 13.02.2014
comment
Можно ли сравнить текст текстового поля подтверждения пароля с @Html.PasswordFor(model=›model.Password)? - person Vishal Hirapara; 13.02.2014

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

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

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

person Steve    schedule 02.06.2016

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

person Bogdan Mates    schedule 26.08.2015

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

Но DataAnnotation предпочтительнее

person Nilesh Gajare    schedule 13.02.2014
comment
Хотя этого, вероятно, было бы достаточно, чтобы значительно ограничить риски, проверка на стороне клиента не является реальной проверкой... - person Laurent S.; 26.08.2015

Можно сравнить значение текстового поля «Пароль» со значением текстового поля «Подтвердить пароль» как на стороне клиента, так и на стороне сервера. Решения, предоставленные другими, предназначены для подтверждения на стороне сервера. Если вы не хотите включать «Подтверждение пароля» в свою модель, вам необходимо сравнить клиентскую сторону. Это можно сделать через 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>

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

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

person Omkar    schedule 23.08.2019