MudAutocomplete报错:Search1无匹配指定Func委托
问题原因
报错的核心是MudAutocomplete的SearchFunc属性要求的方法签名必须匹配Func<string, CancellationToken, Task<IEnumerable<T>>>,而你定义的Search1方法缺少了CancellationToken参数,导致委托不匹配。
解决方法
给Search1方法添加CancellationToken参数,使其符合委托要求。如果不需要利用取消令牌实现搜索取消逻辑,也可以保留参数但不使用;如果需要支持搜索操作取消,建议将令牌传递给异步操作(比如Task.Delay)。
修改后的完整代码
Razor 部分:
<MudGrid> <MudItem xs="12" sm="6" md="4"> <MudAutocomplete T="string" Label="US States" @bind-Value="value1" SearchFunc="@Search1" Variant="Variant.Outlined" /> </MudItem> </MudGrid>
@code 部分:
@code { private string value1; private string[] states = { "Alabama", "Alaska", "American Samoa", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "District of Columbia", "Federated States of Micronesia", "Florida", "Georgia", "Guam", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Marshall Islands", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", }; private async Task<IEnumerable<string>> Search1(string value, CancellationToken token) { // 将token传递给异步操作,支持搜索取消 await Task.Delay(5, token); if (string.IsNullOrEmpty(value)) return states; return states.Where(x => x.Contains(value, StringComparison.InvariantCultureIgnoreCase)); } }
补充说明
当前MudBlazor稳定版的SearchFunc已强制要求包含CancellationToken参数,用来支持搜索请求的取消逻辑,因此必须按上述方式修改方法签名才能解决报错。
内容的提问来源于stack exchange,提问作者Jakkrit Suttiphol
相关产品推荐
相关产品推荐

