You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FluentSearch输入框无法输入,需实现实时触发搜索功能求助

解决FluentSearch实时搜索时输入框清空的问题

问题原因

同时使用@bind-Value和原生@oninput会干扰Blazor的双向绑定机制:@bind-Value本身已经通过输入事件同步绑定变量,手动添加@oninput会导致输入内容无法正确同步到inputValue,最终出现输入框清空的现象。

解决方案

方案一:通过ValueChanged回调处理实时搜索

直接利用FluentSearch继承自InputBase<string>的ValueChanged事件,在值变化时同步更新变量并触发搜索:

<FluentSearch 
    @ref=searchTest
    Value="@inputValue"
    ValueChanged="@(async (newValue) => {
        inputValue = newValue;
        await SearchEmployees();
    })"
    ValueExpression="@(() => inputValue)"
    Placeholder="Search for Employee" />
  • ValueExpression是InputBase组件必需的参数,用于支持表单验证等功能。
  • 这种方式能确保每输入一个字符就立即触发搜索逻辑。

方案二:通过属性Setter自动触发搜索

修改inputValue的定义,在属性值变更时自动调用搜索方法,同时指定绑定事件为oninput实现实时同步:

首先修改输入框代码:

<FluentSearch 
    @ref=searchTest
    @bind-Value="@inputValue"
    @bind-Value:event="oninput"
    Placeholder="Search for Employee" />

然后修改@code中的inputValue属性:

private string? _inputValue;
private string? inputValue
{
    get => _inputValue;
    set
    {
        if (_inputValue != value)
        {
            _inputValue = value;
            // 异步调用搜索,避免阻塞UI渲染
            _ = SearchEmployees();
        }
    }
}

额外优化

可以移除SearchEmployees方法中的StateHasChanged()调用:因为当inputValue更新时,Blazor会自动触发组件重新渲染,无需手动调用。

内容的提问来源于stack exchange,提问作者Matthew Angel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 02:13:19