Оба подхода действительны.Это зависит от того, чего вам нужно достичь при отправке 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)
{
}
Надеюсь, это поможет