Form Validation - sdcruzinsight/Kentico13CoreBaseline GitHub Wiki
When validating Form Models, the default Data Annotation Attributes are available to you to leverage and are done so in the Baseline.
These attributes, however, are not Async by nature and can be limiting. The Baseline uses a package called FluentValidation that allows you to define validation rules for a model, including Async operations (with dependency injections). It is even possible to have some of these operations have a client-side ajax call (we did not set that up, however).
A good example in our repository is the BasicUser which does a database call to make sure the user doesn't already exist or the email is already in use.
You can use this tool for your models as well.