Я не уверен, почему вы настаиваете на использовании Razor Pages, когда есть MVC (Model-View-Controller).
Вместо этого вы должны использовать шаблон MVC. Вы получаете тот же синтаксис бритвы, но не связаны.
Razor Pages были введены как форма преемника WebForms (которая сама пыталась имитировать Windows Forms, что также не связано с разделением).
Если мы вернемся на несколько лет назад, MVVM должен был использовать всю мощь двухсторонней привязки модели WPF, которая действует как отдельный уровень между пользовательским интерфейсом и прикладным уровнем, где можно поместить логику представления в сочетании с презентацией, которая относится к пользовательскому интерфейсу, а не к прикладному уровню, который отделен от пользовательского интерфейса).
По этой причине у ViewModels MVVM также есть (в дополнение к свойствам для привязки модели) такие вещи, как команды, и они могут быть ориентированы на навигацию (т.е. через интерфейсы INavigationAware
Prism).
В этом контексте ViewModels не имеют большого значения в серверных веб-приложениях, поскольку HTTP сам по себе не имеет состояния, когда ViewModels поддерживает состояние.
Таким образом, ViewModels в MVC просто сводятся к DTO (объектам передачи данных), которые имеют базовую проверку (через атрибуты проверки). ViewModels в MVC-приложениях не имеют никакой логики представления, поскольку она визуализируется в HTML, а большая часть логики представления происходит снаружи через JavaScript (что происходит при нажатии кнопки, как отформатировать дату или валюту для пользователя).
При этом вам не нужны полноценные ViewModels в приложении ASP.NET Core, по крайней мере, для серверной части. Однако, если вы используете технологию на стороне клиента (Angular, Vue.js, React), вы можете использовать ViewModels для улучшения функциональности и отделения ее от View.
Фактически, угловые компоненты в значительной степени являются ViewModel и выполняют ту же задачу, что и ViewModels в шаблоне MVVM (в него можно внедрять сервисы, есть односторонние или двусторонние привязки, проверка ввода и в них заложена логика представления).
TL; DR : вам не нужны ViewModel, поскольку они определены в MVVM, просто DTO-подобные классы, чтобы упростить их использование в (Razor) шаблоне представления. И не используйте Razor Pages для развязки.