В чем разница между объявлением свойства внутри @functions {} и объявленным в PageModel на страницах Razor - PullRequest
0 голосов
/ 14 июня 2019

Я создаю приложение для бритвенных страниц, используя .Net Core 2.0

В чем разница между объявлением свойства внутри .cshtml, например:

@functions
{
    public StandardListenerViewModel listener { get; set; }
}

, и объявленным вмодель страницы

public class SingleDeviceModel : PageModel
{

    [BindProperty]
    public StandardListenerViewModel listener { get; set; }

    public void OnGet(StandardListenerViewModel lstner)
    {
        this.listener = lstner;
    }
}

1 Ответ

1 голос
/ 14 июня 2019

Нет реального технического различия в том, что касается свойства, объявлено ли оно в блоке functions или в классе PageModel. Он все еще становится свойством сгенерированного класса, когда приложение компилируется. Разница действительно в организации кода.

Большинство людей предпочитают работать с классом PageModel, поскольку он обеспечивает четкое разделение между пользовательским интерфейсом (разметкой) и логикой обработки запросов. И это намного проще для логики модульного тестирования. Вам просто нужно создать экземпляр класса PageModel в вашем тесте.

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

...