Я обычно держу свой взгляд полностью чистым, никакой логики там. Но я не занимаюсь веб-разработкой. В ситуациях Ajax-ish может потребоваться проверка на стороне клиента, которая должна идти в представлении.
Проверка бизнес-логики идет в модели. Под проверкой бизнес-логики я имею в виду такие вещи, как проверка минимального размера заказа и т. Д.
Проверка ввода идет в докладчике. Это могут быть такие вещи, как проверка, если числовое поле не содержит нечисловых символов. Но в зависимости от вашей ситуации это также может означать проверку наличия файлов и т. Д.
В более сложных случаях, когда валидация должна использоваться повторно в разных местах, я обычно делю ее на механизм валидации, который можно вызывать в разных местах. Это решает некоторые проблемы с дублированием проверочного кода, который используется, например, на уровне представления, а также на уровне постоянства.