首页 > 解决方案 > 如何从 blazor 中的 EventCallback 获取返回值?

问题描述

我的情况是这样的:我正在尝试实现和自动完成。

自动完成将有一个Parameter将接收 astring并返回 a IEnumerable<TValue>

这是我正在尝试做的一个例子

自动完成.razor

@code {
    [Parameter]
    public SOME_TYPE GetItems { get; set; }

    async void Foo(){
        IEnumerable<TValue> items = await GetItems(SomeString);
        // do something with items
    } 
}

父组件.razor

<Autocomplete TValue="SomeEntity"
              GetItems="@GetItems" />

@code {        
    SOME_TYPE GetItems(string name) {
        IEnumerable<SomeEntity> entity = await GetEntitys(name);
        return entity;
    } 
}

问题是我不知道该放什么SOME_TYPE。我应该使用EventCallback吗?Action? 我应该使用什么?

我尝试使用EventCallback,但看起来我无法从中获得返回值EventCallback?我不知道。

标签: c#blazorblazor-server-sideblazor-client-side

解决方案


我只是找出如何做到这一点,我应该使用Func<string, Task<IEnumerable<TValue>>>.

[Parameter]
public Func<string, Task<IEnumerable<TValue>>> GetItems { get; set; }

public async Task<IEnumerable<Employee>> GetItems(string name) {
    IEnumerable<SomeEntity> entity = await GetEntitys(name);
    return entity;
} 

推荐阅读