我想将int i传递给每个列表项的按钮onclick函数。我希望“ clickItem”函数的对应列表项将收到0..2。但事实证明,它总是收到3作为参数。似乎在渲染for循环时未评估clickItem(i)中的变量i。我尝试将其更改为“ clickItem(@i)”,但仍然相同。我该怎么办? (我正在使用blazor服务器端,.net core 3预览5)
@for (int i = 0; i < 3; i++)
{
<li> item @i <button onclick=@(() => clickItem(i))>Click</button> </li>
}
答案 0 :(得分:1)
这是经典,但在Blazor的背景下有点新。
您需要进行复制,否则lambda会“捕获”循环变量。捕获副本就可以了。
@for (int i = 0; i < 3; i++)
{
int copy = i;
<li> item @i <button onclick=@(() => clickItem(copy))>Click</button> </li>
}
答案 1 :(得分:0)
我尝试了一下,并且奏效了。希望对您有所帮助。
@foreach (var item in ListOfUser)
{
<tr>
<td>@item.FirstName</td>
<td>
<button @onclick="(() => GetDetail(item.UserId)) "> Click</button>
</td>
</tr>
}