Подтверждение пароля, не работающего в MVC

#c# #asp.net-mvc #asp.net-mvc-partialview

#c# #asp.net-mvc #asp.net-mvc-partialview

Вопрос:

Я использую первый подход к базе данных MVC. В моей базе данных нет поля подтверждения пароля. Итак, я добавил это поле в частичный класс, который я создал и использовал [NotMapped] атрибут.

Класс, созданный базой данных

 namespace OnlineTest
{        

    public partial class User
    {

        public User()
        {

            this.tbl_purchase = new HashSet<Purchase>();
        }

        public int UserId { get; set; }
        public string username { get; set; }
        public string password { get; set; }
        public string email { get; set; }
        public string PhoneNo { get; set; }

        public virtual ICollection<Purchase> tbl_purchase { get; set; }
    }
} 
  

Частичный класс, который я создал

 namespace OnlineTest
{

    [MetadataType(typeof(UserMetadata))]
    public partial class User
    {

        [DataType("Password")]
        [NotMapped]
        [System.Web.Mvc.Compare("password", ErrorMessage = "The password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }
    }

    public class UserMetadata
    {

        [Required(ErrorMessage = "Please type a username")]
        [Display(Name = "UserName")]
        public string username { get; set; }

        [Required(ErrorMessage = "Please type a EmailId")]
        [EmailAddress(ErrorMessage = "E-mail is not valid")]
        [Display(Name = "Email address")]
        public string email { get; set; }

        [Required(ErrorMessage = "Please type a Phone number")]
        [Display(Name = "Phone Number")]
        [StringLength(10, MinimumLength = 10, ErrorMessage = "Your mobile not corrct")]
        [RegularExpression("([1-9][0-9]*)", ErrorMessage = "You have to enter only numbers 111-111-1111")]
        public string PhoneNo { get; set; }

        [Required(ErrorMessage = "Please type a password")]
        [Display(Name = "Password")]
        public string password { get; set; }
    }        
}
  

Просмотр для сравнения пароля

 <div class="form-group">
                @Html.LabelFor(model => model.password, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.PasswordFor(model => model.password, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.password, "", new { @class = "text-danger" })
                </div>
            </div>


        <div class="form-group">
            @Html.LabelFor(model => model.ConfirmPassword, htmlAttributes: new 
               { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.PasswordFor(model => model.ConfirmPassword, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.ConfirmPassword, "", new { @class = "text-danger" })
            </div>
        </div>
  

Но по какой-то причине он не работает, и Model.state недействителен, он выдает ошибку «Пароль и пароль подтверждения не совпадают».

Комментарии:

1. Самый простой способ проверить это: установить beakpoint внутри действия для сравнения

2. @HappyCoding Я не писал никакого метода для сравнения. Это процедура, которую я нашел в Интернете, пожалуйста, помогите мне, если мне нужно что-то добавить.

3. Вы тоже просите пользователя ввести пароль в вашем представлении? Где в вашем коде присваивается значение свойства Password?

4. @FeryalBadili Я отредактировал вопрос, чтобы добавить часть пароля, я просто написал confirmPassword, потому что мой вопрос был о confirmPassword

5. Может ли кто-нибудь, пожалуйста, помочь мне с этим?