blazor变量参数传递给onclick函数

时间:2019-06-03 10:35:21

标签: blazor blazor-server-side

我想将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>
        }

enter image description here

2 个答案:

答案 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>
            }