Я пытаюсь создать свой первый компонент Razor в проекте на стороне сервера Blazor. Компонент Razor с именем MyComponent
и имеет свойство, настроенное для получения его значения из ввода:
MyComponent.razor
[Parameter]
public int Count {get; set;}
Я получаю счет из внедренной службы, настроенной через IServiceCollection
, который выглядит следующим образом:
public interface ICountingService
{
ValueTask<int> Get();
}
Страница хостинга Index.razor
выглядит следующим образом:
@page "/"
@inject ICountingService Counter
<h1>Hello World!</h1>
<MyComponent Count="@Counter.Get()" />
Однако я не могу связать правильное значение для Count
собственность.
Я получаю следующую ошибку:
cannot convert from 'System.Threading.Tasks.ValueTask<int>' to 'int'
Все примеры, которые я нашел для назначения [Parameter]
значений для компонентов Razor, являются синхронными, и единственные асинхронные значения, которые я нашел для обратные вызовы и методы (не параметры).
Более того, поиск в Интернете не дал ничего очевидного, поэтому я публикую здесь в надежде найти ответ.
Обратите внимание, что я знаю об использовании protected override async Task OnInitializedAsync
и сохранение значения там, но это выглядит как обязательная церемония по сравнению с подходом, описанным выше, особенно при рассмотрении множества сервисов и свойств, которые мне в конечном итоге придется связать.
Итак, как это сделать? присваивать значения из асинхронного вызова свойству Razor Component [Parameter]
так, как я бы предпочел?