A common problem with the Model-View-Controller pattern (MVC) is that often the Don’t Repeat Yourself (DRY) principle is violated when it comes to validation of data. The "single source of truth" with regards to validation is often either the Model layer or the underlying database. But to be able to give the user usable, easy-to-understand error messages, and to give those in a timely manner, we often need to repeat a lot of validation in the View layer.
This often leads to inconsistencies in applications when the validation code in the Model and View layers gets out of sync. This can happen because of a changed business rule that is implemented in the Model, but the View is not updated accordingly. Or if the View is redesigned, unintentional changes in the validation can occur. Even when Model and View are created at the same time but by different engineers, crippled communication between those engineers can lead to validation code that is out of sync.
Repeating...