Часть вашей проблемы здесь заключается в том, что вы пытаетесь перенести проверку вашего домена на ваш взгляд.Хотя это может работать в некоторых ситуациях, на самом деле это нарушение принципа разделения интересов.View и Domain - это разные проблемы, и у каждого из них свои собственные проблемы с проверкой.
Это особенно проблема, потому что ваши объекты ViewModel не идентичны вашим объектам модели домена, но вы пытаетесь использовать метаданные домена каквалидатор для вашей модели представления.Это всегда будет вызывать проблемы. Например,
, у вас может быть мастер, который шаг за шагом создает объект домена на нескольких страницах.Если вы проведете валидацию своего домена, у вас будут проблемы с валидацией, поскольку вы не заполняете необходимые данные на разных этапах.
Независимо от того, какая валидация домена у вас может быть, вы должны определить валидацию своего представления.,Это может означать дублирование метаданных.
Разделение проблем часто идет вразрез с СУХОЙ (не повторяйте себя).Если вы хотите предпочесть DRY, а не SOC, вам нужно будет объединить ваши доменные модели с вашими моделями представлений и использовать одну и ту же модель для обеих.Вы используете SOC в своем домене, и вы хотите использовать DRY на ваш взгляд.Это просто не работает во многих случаях.Я понятия не имею, почему вы пытаетесь украсить свои модели View атрибутами домена.Очевидно, что ваша модель представления не совпадает с моделью вашего домена, поэтому попытка использовать метаданные домена приведет к несоответствию импеданса.
Это не значит, что вы не можете решить свою проблему.Вы, вероятно, могли бы, но для этого потребовалось бы взломать базовый дизайн MVC, добавить свои собственные части расширения и т. Д. Вопрос в том, сколько работы вы хотите сделать, чтобы сэкономить себе часть работы?