Мои классы POCO почти всегда являются моделями доменов и почти никогда не рассматривают модели, поэтому у меня нет этих проблем.
Лучше всего использовать специальный класс "модель представления" при передаче данных из контроллера в представление(или как JsonResult).В этом случае вы помечаете атрибуты на основе пользовательского интерфейса в этой модели представления.В большинстве случаев (за исключением приложений с чисто грубым интерфейсом) вам необходимо отображать нечто большее или меньшее, чем ваш доменный объект, поэтому вам все еще нужна некоторая модель представления (если вы не используете ViewData напрямую).
Примечания к данным по объекту домена имеют смыслтолько если вы хотите использовать их для проверки на уровне бизнеса / данных, которая может принимать другие правила, чем проверка пользовательского интерфейса.
Если вы хотите следовать строгому DDD, где классы POCO являются объектами домена = предлагает методы, выполняющие логику домена в случаеОбъект, который вы должны пойти еще дальше, потому что в этом случае ваша деловая сторона не должна выставлять объекты домена для контроллера.В этом случае вы получите объекты для передачи данных, которые отображаются на бизнес-фасаде и используются контроллером.Я не пурист, поэтому в этом сценарии я склонен к непосредственному использованию аннотаций данных в DTO, но это зависит от других требований.