【发布时间】:2019-09-12 16:19:42
【问题描述】:
我有一个对象数组,其中有一个IsChecked 属性。
我用一个数组填充表格,对于 IsChecked 属性我做@bind 来输入。
当我尝试切换值时,会出现错误。
如果我立即更改值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>
}
错误:
Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer: 警告:未处理的异常呈现组件:索引在外部 数组的边界。
System.IndexOutOfRangeException:索引超出范围 大批。在 ....c__DisplayClass0_1.b__6(布尔 __value) 在 Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions。c__DisplayClass22_0`1.b__0(ChangeEventArgs e) --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(任务 任务)在 Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(任务 任务处理) Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost:错误: 电路中未处理的异常 'LzL8iNZr7FmkJFJRS3QTW3QzJwP9R-p3CaclRHcE1_A.'。
System.IndexOutOfRangeException:索引超出范围 大批。在 ...c__DisplayClass0_1.b__6(布尔 __value) 在 Microsoft.AspNetCore.Components.EventCallbackFactoryBinderExtensions。c__DisplayClass22_0`1.b__0(ChangeEventArgs e) --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(任务 任务)在 Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(任务 任务处理)
我做错了什么?
【问题讨论】:
-
我的钱花在了被闭包捕获的循环变量上,所以一旦它尝试实际绑定,
i == firms.Length。如果您只是在每次迭代的页面上打印i会发生什么?是firms.Length的值firms.Length次吗?