Мы помещаем все наши DataAnnotations в наш клиент класса Model. Затем мы выставляем экземпляр Customer как свойство на нашем связанном ViewModel вместе с некоторыми списками поиска для стран и т. Д. И отображаем это в нашем представлении. Пока все хорошо.Применение атрибутов DataAnnotation к ViewModel из модели
Затем мы читаем о SO и других источниках, что мы не должны передавать весь наш объект модели Customer в представлении по причинам, связанным с тем, чтобы предоставить только представление с минимальным минимумом, необходимым и, что более важно (для нас), чтобы предотвратить Возможные проблемы, когда ModelBinding потенциально вредоносных postbacks, которые добавляют дополнительную информацию, чтобы изменить наши свойства моделей, которые в противном случае не были доступны в представлении.
Как мы можем получить все эти атрибуты DataAnnotation с объекта модели и на возможно вырезанные свойства ViewModel, не бросая DRY-принцип над утесом?
Кроме того, правильно ли мы думаем, что мы не должны использовать TryUpdateModel против объекта, который мы вытаскиваем из db? Я предполагаю, что наш выбор состоит в том, чтобы либо использовать TryUpdateModel, и передавать список исключений свойств, который не кажется мне особенно элегантным, учитывая, что список является всего лишь параметром строки типа. Или, возможно, нам стоит покончить с TryUpdateModel и использовать такой инструмент, как AutoMapper, который более безопасен для типа?
Спасибо за любые мысли по этим вопросам.