У вас должна быть логика проверки для модели представления. Это то, что отправляет представление и что должно быть проверено. Что касается заполнения viewmodel, вот как это сделать: написать репозиторий, который запрашивает базу данных и возвращает модели. Затем сопоставьте эти модели с моделями представления ( AutoMapper может помочь вам здесь). Наконец, верните viewmodels в представление. Это также работает наоборот: пользователи помещают некоторые данные в действие контроллера как форма модели представления, которая после проверки сопоставляется с моделью и передается в хранилище для обновления.
В качестве альтернативы аннотациям данных вы можете взглянуть на FluentValidation для проверки моделей представлений. прекрасно интегрируется с ASP.NET MVC.