2013-03-19 32 views
8

Trong ứng dụng ASP.NET MVC4, chúng tôi đang sử dụng FluentValidation để xác thực mô hình của chúng tôi. Trong một số trường hợp nhất định, chúng tôi chỉ muốn xác thực thuộc tính khi thuộc tính khác có giá trị. Chúng tôi sử dụng từ khóa Khi thực hiện điều này. Một lớp xác thực đơn giản trông giống như sau:xác thực thông thạo khi ở phía khách hàng

public class PersonValidator : AbstractValidator<Person> 
{ 
    public PersonValidator() 
    { 
     RuleFor(item => item.FirstName).NotEmpty(); 
     RuleFor(item => item.LastName).NotEmpty().When(item => !string.IsNullOrEmpty(item.FirstName)) 
    } 
} 

Chúng tôi muốn xác thực phía khách hàng cho việc này. Tôi đã cố gắng tạo ra một FluentValidationPropertyValidator tùy chỉnh. Nhưng tôi không thể tìm được cách để nhận phần Khi quy tắc xác nhận hợp lệ. Ai đó có thể chỉ cho tôi đúng hướng không?

+2

sau khi một số nghiên cứu khác phát hiện ra điều này sẽ đòi hỏi nhiều công việc, thông tin thêm: https://fluentvalidation.codeplex.com/discussions/229346 –

Trả lời

0

Một số vụ việc phê chuẩn trong FluentValidation chỉ không hỗ trợ xác nhận client-side:

Từ Documentation (http://fluentvalidation.codeplex.com/wikipage?title=mvc&referringTitle=Documentation):

Lưu ý rằng FluentValidation cũng sẽ làm việc với client-side của ASP.NET MVC xác thực, nhưng không phải tất cả các quy tắc đều được hỗ trợ. Ví dụ: bất kỳ quy tắc nào được xác định bằng điều kiện (với Khi/Trừ khi), tuỳ chỉnh trình xác thực hoặc cuộc gọi đến Phải sẽ không chạy ở phía máy khách. Các Validators sau được hỗ trợ trên máy khách:

* notnull/NotEmpty * Matches (regex) * InclusiveBetween (range) * CreditCard * Email * EqualTo (cross-bất động sản so sánh bình đẳng) * Chiều dài

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