#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. Может ли кто-нибудь, пожалуйста, помочь мне с этим?