Передача значений из формы бритвы в модель - PullRequest
1 голос
/ 10 мая 2019

У меня есть .NET Core с приложением Razor, тогда есть страница.На нем есть таблица и форма для отображения различных (фильтрующих) данных в этой таблице (простой ввод года-месяца и флажок).Метод формы установлен в GET.Я заметил, что данные формы можно передавать в модель двумя различными способами:

[BindProperty(SupportsGet = true)]
public DateTime Date { get; set; }

[BindProperty(SupportsGet = true)]
public bool ForUserOnly { get; set; }

или

public async Task OnGetAsync(DateTime date, bool forUserOnly)

Вопрос в том, какой из них использовать?Каковы преимущества одного и другого?

1 Ответ

0 голосов
/ 10 мая 2019

Оба подхода действительны.Это зависит от того, чего вам нужно достичь при отправке form.

  • Использовать подход [BindProperty(SupportsGet = true)], если необходимо получить доступ к свойствам вне метода обработчика OnGetAsync, например, отображать наpage

  • Использование подхода метода обработчика OnGetAsync, когда свойства не нужны вне этого метода обработчика.

Независимо от того, какой подход вы используетевсегда будет вызываться метод-обработчик, который позволит вам добавить некоторую настраиваемую логику, например настраиваемую проверку или что-то в этом роде.

Если у вас есть общедоступные свойства, определенные ниже, они будут связаны либо с использованием параметров QueryString, либоRouteParameters.Когда вы отправляете форму с использованием метода GET, параметры будут добавляться к URL-адресу в виде строк запроса.

[BindProperty(SupportsGet = true)]
public DateTime Date { get; set; }

[BindProperty(SupportsGet = true)]
public bool ForUserOnly { get; set; }

При использовании приведенного выше кода метод-обработчик будет без параметров

public async Task OnGetAsync()
{
    // do something here
}

Отправленный вами URL станет https://youhost.com?date=value&forUserOnly=value

Если вы используете метод обработчика OnGetAsync для привязки представленной модели, то вам не нужен атрибут [BindProperty] или даже открытые свойства.Поскольку отправленные значения будут переданы в метод обработчика.Все зависит от того, какой подход вы решите использовать в итоге.

public async Task OnGetAsync(DateTime date, bool forUserOnly)
{
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...