На мой взгляд, все зависит от того, какую проверку вы хотите выполнить:
1. Если вы не хотите, чтобы поле было пустым или имело определенный формат, я сделаю эту проверку на слое вида. Именно здесь можно применить большинство регулярных выражений. Только после того, как введенные пользователем данные верны, я передам управление контроллеру для дальнейшей обработки бизнес-логики
2. Если я хочу убедиться, что пользовательский ввод (скажем, имя пользователя) уникален или нет, я выполню эту проверку на стороне контроллера и передам любую обратную связь в представление. В последнем случае контроллер может зависеть от абстракции уровня доступа к данным или уровня обслуживания или любых других помощников контроллера.
3. Еще нужно рационализировать подход к использованию.