2011-12-20 25 views
11

Tôi đang cố gắng sử dụng IValidatableObject để xác thực các giá trị biểu mẫu tương ứng với nhau. Tôi muốn chỉ định một ValidationResult cho một trường cụ thể để tôi có thể hiển thị thông báo lỗi bên cạnh trường đó.Gán Xác thựcResult cho trường cụ thể?

Ví dụ: tôi có thể muốn người dùng nhập mật khẩu hai lần và xác thực không thành công nếu số 2 không bằng với lần đầu tiên, sau đó hiển thị thông báo lỗi bên cạnh thứ hai.

Tuy nhiên có vẻ như tôi chỉ có thể gán lỗi ở cấp mô hình theo cách này; theo mô hình cấp I có nghĩa là một lỗi sẽ hiển thị với @Html.ValidationSummary(true) và không được gắn với một trường mô hình cụ thể.

Tôi đã kiểm tra tuyên bố cho ValidationResult và tôi không thấy bất kỳ thuộc tính hoặc phương thức nào hữu ích cho việc này. Vì vậy, bất cứ ai có thể chỉ cho tôi một cách để chỉ định một ValidationResult cho một lĩnh vực cụ thể từ bên trong một phương pháp xác nhận của một IValidateableObject, hoặc xác nhận rằng nó là không thể làm như vậy?

(LƯU Ý: Tôi KHÔNG tìm kiếm một công việc xung quanh. XIN - không có câu trả lời về, ví dụ, bộ lọc mà sẽ chăm sóc ví dụ mật khẩu. Tôi chỉ muốn biết cụ thể về các giới hạn của IValidateObject.)

Trả lời

23

Có thể, ValidationResult có quá tải chấp nhận IEnumarable của chuỗi, thuộc tính được liên kết.

Ví dụ.

 public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     if (Password != PasswordConfirmation) 
      yield return new ValidationResult("Password confirmation must match", new[] { "PasswordConfirmation" }); 
    } 
+1

Có! Tôi vừa tìm thấy điều này và chuẩn bị đăng bài như là câu trả lời của riêng tôi – Faust

Các vấn đề liên quan