Tôi đang sử dụng Fluent Validation trong dự án của mình.
Trong ViewModel của tôi, tôi có một thuộc tính có kiểu chuỗi, các giá trị hợp lệ chỉ là chuỗi đại diện cho các số nguyên dương.
Vì vậy, tôi đã tạo một đơn giản IntegerValidator
để kiểm tra xem chuỗi có thể được phân tích cú pháp thành một số nguyên hay không. Những công việc này.
Vấn đề là cách thêm quy tắc phải là số nguyên dương? Tôi muốn sử dụng số Greater Than Validator hiện có, nhưng việc chuỗi nó vào quy tắc cho thuộc tính chuỗi của tôi sẽ so sánh nó với tên là string
, không phải là một cú pháp được phân tích int
. Làm thế nào để đạt được điều này?Quy tắc kết nối phụ thuộc vào nhau
Mẫu những gì tôi muốn làm (chú ý ToInt()
):
RuleFor(x => x.BatchNumber).SetValidator(new IntegerValidator())
.ToInt().GreaterThan(0);
Điều này thực sự có ý nghĩa! Tuy nhiên, tôi tự hỏi vai trò của ToInt là gì. Như tôi thấy, nó sẽ chuyển đổi một 'RuleBuilder' thành 'RuleBuilder ' và đảm bảo rằng giá trị được xác thực được chuyển thành 'int' tại thời gian xác nhận. Nhưng ... chuỗi phương thức phải trả về một 'RuleBuilder '. Đúng? Vì vậy, phải có một cách để hướng dẫn các quy tắc 'int' liên tiếp (như' GreaterThan') để thực hiện xác nhận 'int', nhưng trả về một trình xây dựng quy tắc' chuỗi'. Tôi lo sợ điều này vượt quá khả năng hiện tại của FluentValidation. –
@GertArnold: Vâng, 'ToInt' không có ý nghĩa quá nhiều, tôi nghĩ vậy. Tôi thực sự không quan tâm * làm thế nào * nó sẽ làm việc, chỉ cần * rằng * Tôi có thể sử dụng 'GreaterThan' và rằng một int được truyền cho' GreaterThan'. –
Ok, điểm chính của tôi là trong tư duy hiện tại của Xác thực thông thạo, đó có thể là vấn đề khái niệm. –