gpt4 book ai didi

c# - 删除动态创建的组件总是从列表中删除最后一项

转载 作者:行者123 更新时间:2023-12-04 11:36:23 25 4
gpt4 key购买 nike

我正在使用 Blazor WebAssembly 实现一个简单的海报板。使用 X 按钮删除任何卡片时,删除的始终是列表中的最后一个元素。

@foreach (var item in _cards)
{
<div class="card-title">
<input type="text" id="@item.TitleElementId" value="@item.Title" />
<button class="btn-remove" @onclick="() => RemoveCard(item)">X</button>
</div>
}
<button class="btn-add" @onclick="AddNewCard">+</button>

@code {
private List<Card> _cards = new List<Card>();

private void AddNewCard()
{
_cards.Add(new Card());
}

private void RemoveCard(Card card)
{
_cards.Remove(card);
// Also tried _cards.RemoveAll(i => i.TitleElementId == card.TitleElementId);
}
}

最佳答案

我注意到只有在我修改卡内某些输入的值后才会发生这种情况。

结果证明是值绑定(bind)的问题。我需要使用 Blazor 的 @bind-""而不是默认的 html value="" .不幸的是,我不知道为什么会发生这种情况。

所以代替

<input type="text" value="item.Title"/>

我改为
<input type="text" @bind="item.Title"/>

一切都按预期进行。

关于c# - 删除动态创建的组件总是从列表中删除最后一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60867023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com