Blazor вызывает метод при изменении значения свойства

#blazor #blazor-webassembly

#blazor #blazor-webassembly

Вопрос:

я ищу способ вызвать метод, когда значение свойства изменяется (не ПОЛЬЗОВАТЕЛЕМ)

например, у меня есть это свойство

[Parameter]public int SelectedPatientId { get; set; }

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

 public async void valuechanged()
{
... do something here
}
  

до сих пор я пробовал это, и это не работает

<input type="hidden" value="@SelectedPatientId" @onchange="valuechanged"/>

<input type="hidden" @bind="@SelectedPatientId" @bind:event="valuechanged"/>

Комментарии:

1. Вы можете вызвать valuechanged установщик.

Ответ №1:

Вызов установщика :

 int _selectedPatientId;
[Parameter]public int SelectedPatientId 
{ 
    get => _selectedPatientId;
    set
    {
        _selectedPatientId = value;
        valuechanged();
    }
}
  

Метод asnc должен возвращать не void, а Task или ValueTask

 public async Task valuechanged()
{
... do something here
    return Task.CompletedTask;
}
  

Комментарии:

1. Спасибо, это то, что я ищу

2. Я собираюсь сделать то же самое, но это не очень хорошее решение. Исключения будут отброшены, а что, если вам нужно возвращаемое значение асинхронной функции?

3.Я отмечаю, что в примере обратного вызова PropertyChanged MS выполняет «вызов и забвение» для асинхронного метода в установщике свойств: set => PropertyChanged.InvokeAsync(value); learn.microsoft.com/en-us/aspnet/core/blazor/components /…