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

Blazor如何通过onClick事件触发自定义事件实现搜索逻辑复用

实现方案

1. 封装公共搜索按钮组件

新建独立Razor组件,例如命名为SearchButton.razor,代码如下:

<button class="btn input-search-btn no-outline" @onclick="async () => await Search.InvokeAsync()">
    <!-- 此处可直接写死按钮内部内容,也可加插槽支持外部自定义 -->
    搜索
</button>

@code {
    /// <summary>
    /// 对外暴露的搜索自定义事件
    /// </summary>
    [Parameter]
    public EventCallback Search { get; set; }
}

如果需要支持不同页面自定义按钮显示内容(比如放不同的文字、图标),可以增加插槽参数:

<button class="btn input-search-btn no-outline" @onclick="async () => await Search.InvokeAsync()">
    @ChildContent
</button>

@code {
    [Parameter]
    public EventCallback Search { get; set; }

    [Parameter]
    public RenderFragment ChildContent { get; set; }
}

2. 业务页面引用组件

原有两个页面直接替换原有按钮代码即可,已经写好的独立Search方法不需要做任何修改:

<!-- 无插槽版本直接调用 -->
<SearchButton Search="@Search" />

<!-- 带插槽版本可以自定义按钮内容 -->
<SearchButton Search="@Search">
    <i class="icon-search"></i> 页面专属搜索
</SearchButton>

可选扩展:带参数的搜索事件

如果需要给搜索方法传递参数(比如输入框的搜索关键词),可以把事件改为泛型版本:

// 组件内代码修改
[Parameter]
public EventCallback<string> Search { get; set; }

// 触发事件时传递参数
await Search.InvokeAsync(搜索关键词变量);

页面绑定的Search方法对应修改为接收对应类型的参数即可正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:24:01