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

如何将Blazor Select的@onchange事件绑定到Id字段而非硬编码?

解决方法

有两种简单方式可以把选中的Visit ID传递给VisitSelected方法,替代硬编码的参数:

方法一:利用已绑定的值

你已经通过bind-value="@VisitDTO.Id"把下拉框选中值绑定到了VisitDTO.Id,直接在VisitSelected方法里使用这个字段即可,无需额外传参:

修改后的Select代码:

<Select id="Person" class="form-select" bind-value="@VisitDTO.Id" style="width: 500px" @onchange="VisitSelected">
    <option value="0">Ivco Ref:</option>
    @foreach (var visits in Visits)
    {
        <option value="@visits.Id">@visits.Id</option>
    }
</Select>

对应方法实现:

private void VisitSelected()
{
    var selectedVisitId = VisitDTO.Id;
    // 这里使用选中的ID执行后续逻辑
}

方法二:从事件参数中获取选中值

如果不想依赖VisitDTO.Id的绑定,也可以直接从onchange事件参数里提取选中的ID:

修改后的Select代码:

<Select id="Person" class="form-select" bind-value="@VisitDTO.Id" style="width: 500px" @onchange="HandleVisitChange">
    <option value="0">Ivco Ref:</option>
    @foreach (var visits in Visits)
    {
        <option value="@visits.Id">@visits.Id</option>
    }
</Select>

对应方法实现:

private void HandleVisitChange(ChangeEventArgs e)
{
    // 安全转换选中值为int,避免转换失败抛出异常
    if (int.TryParse(e.Value?.ToString(), out int selectedVisitId))
    {
        VisitSelected(selectedVisitId);
    }
}

private void VisitSelected(int visitId)
{
    // 这里拿到的就是实际选中的Visit ID
    // 执行后续逻辑
}

注意事项

  • 如果第一个选项(value="0")是占位符,记得在方法里判断selectedVisitId是否为0,避免触发无效逻辑。
  • 优先用int.TryParse而非直接int.Parse,能提升代码健壮性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:40:23