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

Blazor Server端循环绑定输入框回车后清空,数据绑定问题排查

问题原因及解决方案

你的问题出在Blazor循环绑定中的变量捕获机制:for循环的变量i是全局共享的,所有输入框的绑定表达式最终都会引用循环结束后的i值(也就是10),导致实际绑定的是PLC_VAR_name[10],而非你预期的PLC_VAR_name[0]到PLC_VAR_name[9]。当按下回车触发组件重新渲染时,循环重新执行,输入框显示的是未被修改的PLC_VAR_name[0]到PLC_VAR_name[9],看起来就像输入内容被清空了。

修复方案一:用局部变量捕获循环索引

在循环内部声明局部变量保存当前i值,确保每个输入框绑定到正确的数组索引:

@for (int i = 0; i < 10; i++)
{
    var index = i; // 关键:捕获当前循环的索引值
    <tr height="30px">
        <td class="td_DiagBuff_data" width="200"> <input type="text" @bind="@PLC_VAR_name[index]"/></td>            
    </tr>
}

@code {
    public string[] PLC_VAR_name { get; set; } = new string[99];
}

修复方案二:改用foreach循环遍历索引

通过Enumerable.Range生成独立的索引序列,用foreach循环遍历,每个迭代的索引都是独立实例:

@foreach (var index in Enumerable.Range(0, 10))
{
    <tr height="30px">
        <td class="td_DiagBuff_data" width="200"> <input type="text" @bind="@PLC_VAR_name[index]"/></td>            
    </tr>
}

@code {
    public string[] PLC_VAR_name { get; set; } = new string[99];
}

两种方案都能让输入框正确绑定到对应数组元素,输入内容后回车就不会再出现清空问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:01:02