Tôi muốn tạo mô hình chế độ xem cho người dùng mới bằng cách sử dụng mã bên dưới. Lớp "Người dùng" chỉ chứa hai thuộc tính (được đơn giản hóa bây giờ) mà tôi sẽ tiếp tục tồn tại trong cơ sở dữ liệu; mô hình khung nhìn thêm trường "so sánh mật khẩu", chỉ được sử dụng trong chế độ xem. Tôi muốn có mô hình xem sử dụng trực tiếp lớp "Người dùng", thay vì lặp lại tất cả các trường được xác định trong "Người dùng".So sánh (mật khẩu) thuộc tính
Câu hỏi của tôi là cách tôi tham chiếu chính xác "User.Password" trong thuộc tính [So sánh] cho trường "ComparePassword"?
public class User
{
[Required]
public string UserName { get; set; }
[Required]
[DisplayName("Password")]
[DataType(DataType.Password)]
public string Password { get; set; }
}
public class NewUserViewModel
{
public User User { get; set; }
[Required]
[DataType(DataType.Password)]
[DisplayName("Re-enter Password")]
[Compare("Password", ErrorMessage="Passwords must match")]
public string ComparePassword { get; set; }
}
HTML được tạo cho "Mật khẩu" và "ComparePassword" ở bên dưới.
<input class="text-box single-line password"
data-val="true"
data-val-required="The Password field is required."
id="User_Password"
name="User.Password"
type="password" value="" />
<input class="text-box single-line password"
data-val="true"
data-val-equalto="Passwords must match"
data-val-equalto-other="*.Password"
data-val-required="The Re-enter Password field is required."
id="ComparePassword"
name="ComparePassword"
type="password" value="" />
Điều quan trọng là như thế nào "dữ liệu val-equalto-khác" được xử lý bởi Javascript. Nếu tôi sử dụng "Mật khẩu" hoặc "User_Password" thì không có gì xảy ra - không có kiểm tra nào được thực hiện. Nếu tôi sử dụng "User.Password", việc kiểm tra được thực hiện nhưng luôn thất bại.
Tôi không có vấn đề thực sự nào khi thực hiện việc này trực tiếp trong jQuery, nhưng muốn sử dụng thuộc tính [So sánh] nếu có thể.
Tôi gặp vấn đề chính xác cùng (tôi đang sử dụng FluentValidation mặc dù vấn đề có vẻ giống hệt nhau). Bất kỳ may mắn? – Peter
Tôi đang làm điều tương tự và điều này không hiệu quả đối với tôi. Nó nói "[ViewModel] .User.Password" không tồn tại và ném một lỗi thời gian chạy trước khi biểu mẫu hiển thị. Tôi có một mô hình xem với người dùng như một tài sản và mật khẩu như là một tài sản chuỗi bên dưới nó. Bất kỳ ý tưởng? – vbullinger