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

Blazor中如何通过EventCallback实现子组件向父组件传值

Blazor子组件向父组件传值实现

你的子组件Cars的传值逻辑已经符合Blazor的标准实现规范,不需要修改,问题出在父组件的事件处理方法没有定义对应参数接收回传值。

EventCallback<string>类型的回调触发时会携带一个字符串类型的参数,父组件绑定的处理方法只要声明同类型的形参,就能直接拿到子组件传递的车辆ID。

修正后的父组件代码

<Cars CarSelected="@getCarId"></Cars>

@* 示例:展示接收到的选中车辆ID *@
@if (!string.IsNullOrEmpty(selectedCarId))
{
  <p>当前选中车辆ID:@selectedCarId</p>
}

@code {
  // 定义字段存储接收到的ID,按需使用
  private string selectedCarId;

  // 添加string类型形参,参数名可自定义,类型必须和EventCallback声明的泛型类型匹配
  private void getCarId(string carId)
  {
    // 此处carId就是子组件点击条目时传递的car.id
    selectedCarId = carId;
    // 后续写拿到ID后的业务逻辑即可,比如查询车辆详情、触发页面跳转等
  }
}

异步场景适配

如果拿到ID后需要执行异步操作(比如调用接口、IO操作),可以直接把回调方法改成异步写法,传值逻辑不受影响:

@code {
  private string selectedCarId;

  private async Task getCarId(string carId)
  {
    selectedCarId = carId;
    // 示例:异步拉取选中车辆的详情数据
    // await carService.GetCarDetail(carId);
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:45:40