奇数复选框@onchange处理行为



在我的一个(服务器端)blazor页面中,我有以下结构:

  1. 每一行有一个复选框的表格
  2. 复选框有一个onchange处理程序,它将在一个星座中从"selectableelement"中删除未选中的元素。收藏:
@foreach (ViewModels.Element element in SelectableElements)
{
<tr>
<td>
<input type="checkbox" checked="@IsChecked(element)" @onchange="(e) => OnCheckedChange(element, e)">
</td>       
<td>
@element.Name
</td>
</tr>
}
// ...
protected void OnCheckedChange(Element element, ChangeEventArgs e)
{
if (!(bool)e.Value)
{
SelectableElements.Remove(element);
}    
}

当选中的元素未选中时,它将从表中消失。但是,在重新渲染被删除的行下面的行后,它的复选框将被选中,这不是我想要的,我不知道为什么会发生这种情况?我可以在调试器中看到IsChecked(…)对于未检查的元素返回true。

我最终让它工作的方法是这样的:

<input type="checkbox" checked="@IsChecked(element)" @onclick:preventDefault @onclick="(e) => OnCheckedChange(element)">

这样我就可以自己处理点击,而不需要默认行为设置复选标记。

最新更新