C# Blazor如何使用绑定到布尔数组

C# Blazor如何使用绑定到布尔数组,c#,.net-core,blazor,C#,.net Core,Blazor,我有一个对象数组,其中有一个IsChecked属性。 我用一个数组填充表格,其中对属性进行了检查,并@bind to input 当我尝试切换该值时,会出现错误。 如果我立即更改值IsChecked=true,则勾选复选标记 for(var i = 0; i < firms.Length; i++) { <tr> <td>@firms[i].ShortTitle</td> <th scope="row">

我有一个对象数组,其中有一个
IsChecked
属性。 我用一个数组填充表格,其中对
属性进行了检查,并@bind to input

当我尝试切换该值时,会出现错误。 如果我立即更改值
IsChecked=true
,则勾选复选标记

for(var i = 0; i < firms.Length; i++)
{
    <tr>
        <td>@firms[i].ShortTitle</td>
        <th scope="row">
            <div class="custom-control custom-checkbox">
                <input type="checkbox" ... @bind="@firms[i].IsChecked" />
             ..
            </div>
        </th>
    </tr>
}

for(var i=0;i
错误:

Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer: 警告:未处理的异常呈现组件:索引在外部 数组的边界

System.IndexOutOfRangeException:索引超出了 数组。在…c_uuu显示类0_u1.b_uuu6(布尔值 __在Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.c_uuDisplayClass22_0`1.b_u0(ChangeEventArgs (e) ---来自引发异常的上一个位置的堆栈结束跟踪---在 Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(任务 任务)在 Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(任务 taskToHandle) Microsoft.AspNetCore.Components.Server.Circuits.Circuits主机:错误: 电路中未处理的异常 “LzL8iNZr7FmkJFJRS3QTW3QzJwP9R-p3CaclRHcE1_A.”

System.IndexOutOfRangeException:索引超出了 数组。在…c_uuu显示类0_u1.b_uuu6(布尔值 __在Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions.c_uuDisplayClass22_0`1.b_u0(ChangeEventArgs (e) ---来自引发异常的上一个位置的堆栈结束跟踪---在 Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(任务 任务)在 Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(任务 taskToHandle)

我做错了什么?

在代码中的某个地方(您没有显示所有代码),执行了“委托”事件回调,但“索引超出了数组的边界”;这是因为访问索引值的代码总是得到最后一个索引+1

要解决这个问题,请使用一个局部变量,您应该将i的值赋给它,类似这样的“


希望这有帮助…

我的钱在循环变量上,它被捕获在一个闭包中,所以一旦它尝试实际绑定,
i==firms.Length
。如果在每次迭代中只将
i
打印到页面上,会发生什么情况?它是
firms.Length
的值
firms.Length
次吗?它确实有帮助,但我已经将for循环更改为foreachYes,这是foreach()循环的固定值,而不是for()。解释是生成的代码包含一个lambda,google的“lambda闭包”。
var local = i;