Sử dụng action filter để validate model trong asp.net core

Thông thường trong asp.net core/mvc ta hay sử dụng các attribute để check điều kiện validate cho model, ví dụ như

Trong action method kiểm tra model hợp lệ hay không bằng cách sử dụng ModelState

Cách này hoạt động tốt tuy nhiên hơi nông dân vì phải check điều kiện ở nhiều Action method, nhiều controller khác nhau. Dẫn đến code bị lặp lại nhiều lần, trông không đẹp & khó bảo trì. Để khắc phục tình trạng này thì bây giờ chúng ta sẽ sử dụng Action filter để validate như sau

Bước 1 : Tạo 1 class cho action filter, dùng để validate

Trong ActionFilter, nếu bạn muốn lấy các setting trong file config thì có thể sử dụng câu lệnh sau để lấy ra biến Configuration (tương tự biến Configuration trong startup.cs)

Bước 2: Cách sử dụng

Nếu muốn áp dụng filter này cho tất cả các controller, bạn hãy khai báo trong file startup.cs như sau

Nếu muốn áp dụng cho một số controller cụ thể thì tại bước 1, bạn hãy kế thừa thêm từ class Attribute sau đó khai báo attribute cho controller mà bạn muốn áp dụng. ví dụ như

Tham khảo https://www.carlrippon.com/fluentvalidation-in-an-asp-net-core-web-api/