Нет реального технического различия в том, что касается свойства, объявлено ли оно в блоке functions
или в классе PageModel. Он все еще становится свойством сгенерированного класса, когда приложение компилируется. Разница действительно в организации кода.
Большинство людей предпочитают работать с классом PageModel, поскольку он обеспечивает четкое разделение между пользовательским интерфейсом (разметкой) и логикой обработки запросов. И это намного проще для логики модульного тестирования. Вам просто нужно создать экземпляр класса PageModel в вашем тесте.
Как правило, блоки functions
чаще используются в простых демонстрациях, чтобы сделать код более легким для понимания концепций. Они, вероятно, также предоставляют более простой способ для тех, кто переходит на Razor Pages из PHP, классических ASP или ASP.NET Web Pages, где логика обработки и разметка пользовательского интерфейса в одном файле - это обычный шаблон.