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

Blazor中如何获取值变更的输入框所在表格单元格的索引?

解决Blazor输入框变更时获取对应索引的问题

要实现获取变更输入框的索引并更新对应Data列表元素,你可以按以下步骤修改代码:

1. 替换遍历方式,带上索引

原来的foreach无法直接获取元素索引,改用for循环(能明确每个输入框对应的索引值,还能避免Blazor的循环变量捕获问题):

<table>
    <tr>
        <th>X2</th>
        @for (int i = 0; i < Data.Count; i++)
        {
            var index = i;
            <td>
                <input type="number" min="0" max="360" step="1" 
                       @onchange="(e) => ItemChanged(e, index)"
                       value="@Data[index]" />
            </td>
        }
    </tr>
</table>

2. 修改ItemChanged方法,接收索引参数

更新方法签名,添加索引参数,用该索引定位到Data列表中对应的元素:

@code {
    public List<double> Data = new List<double>{1.2, 0.5, 0.8, 1.4};
    
    public void ItemChanged(ChangeEventArgs args, int index)
    {
        if (double.TryParse(args.Value?.ToString(), out var newValue))
        {
            Data[index] = newValue;
            // 若修改后UI未自动更新,可手动调用以下方法通知组件渲染
            // StateHasChanged();
        }
    }
}

关键说明

  • 把循环变量i赋值给局部变量index,是为了避免Blazor中循环变量的捕获问题,防止所有输入框都绑定到最后一个索引。
  • 使用double.TryParse做安全转换,能避免输入非数字值时抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:40:28