C# Blazor-动态生成表中的按钮

C# Blazor-动态生成表中的按钮,c#,blazor,.net-core-3.0,blazor-server-side,C#,Blazor,.net Core 3.0,Blazor Server Side,我的表有一个小问题,按钮和onclick工作正常,但是我希望通过单击传递的参数没有按我期望的方式工作 这是密码 <table class="table-spaced table-responsive"> <thead> <tr> <th /> @for (int i = 1; i <= Plate.PlateType.NumberOfColumns; i++)

我的表有一个小问题,按钮和onclick工作正常,但是我希望通过单击传递的参数没有按我期望的方式工作

这是密码

<table class="table-spaced table-responsive">
    <thead>
        <tr>
            <th />
            @for (int i = 1; i <= Plate.PlateType.NumberOfColumns; i++)
            {
                <th class="cell_head">@i</th>
            }
        </tr>
    </thead>
    <tbody>
        @for (int y = 0; y < Plate.PlateType.NumberOfRows; y++)
        {
            <tr>
                <td style="vertical-align:central">
                    @Helper.RowLetters[y]
                </td>
                @for (int x = 1; x <= Plate.PlateType.NumberOfColumns; x++, Position = string.Format("{0:c}{1:d2}", Helper.RowLetters[y], x))
                {
                    if (Plate.Compounds.ContainsKey(string.Format("{0:c}{1:d2}", Helper.RowLetters[y], x)))
                    {
        ---->           <td class="compound"><button type="button" class="compound" @onclick="() => PlateGridClick(Position)" itemprop="@string.Format("{0:c}{1:d2}", Helper.RowLetters[y], x))"/></td>
                    }
                    else
                    {
                        <td class="no_compound" />
                    }
                }
            </tr>
        }
    </tbody>
</table>

@对于(int i=1;i
}
其他的
{
}
}
}
例如,表格大小为P24,位置始终为P25,无论我按下哪个按钮,我都希望在创建特定单元格时获得位置值,但当我单击按钮时,当整个表格已创建且坐标已到达终点时,位置似乎已设置


是否有一种方法可以实现blazor中单击事件的相同功能,但在单击时将参数存储在按钮中,而不是获取位置参数的当前值?

我相信这是使用for循环的结果

尝试以下操作:在for循环中定义一个局部变量,并将局部变量的值分配给必要的代码

示例代码阐明了我的意思:

此循环创建10个button元素,值10传递给ShowPosition方法。无论单击哪个按钮,值10都会传递给ShowPosition方法。10是for循环结束时的i值。这是不执行此操作的方法

 @for (int i = 0; i < 10; i++)
    {
        <button type="button" @onclick="() => ShowPosition(i)">Click</button> 
    }
(int i=0;i<10;i++) { 点击 } 为了正确地执行此操作,您应该创建一个如下所示的局部变量

 @for (int i = 0; i < 10; i++)
 {
     var local_i = i;

     <button type="button" @onclick="() => ShowPosition(local_i)">Click</button>
        }
(int i=0;i<10;i++) { var local_i=i; 点击 } 现在,无论何时单击按钮控件,都会得到正确的值

请搜索一个完整的答案,解释lambada方法如何与用户交互。这就是我


希望这有帮助…

我相信这是使用for循环的结果

尝试以下操作:在for循环中定义一个局部变量,并将局部变量的值分配给必要的代码

示例代码阐明了我的意思:

此循环创建10个button元素,值10传递给ShowPosition方法。无论单击哪个按钮,值10都会传递给ShowPosition方法。10是for循环结束时的i值。这是不执行此操作的方法

 @for (int i = 0; i < 10; i++)
    {
        <button type="button" @onclick="() => ShowPosition(i)">Click</button> 
    }
(int i=0;i<10;i++) { 点击 } 为了正确地执行此操作,您应该创建一个如下所示的局部变量

 @for (int i = 0; i < 10; i++)
 {
     var local_i = i;

     <button type="button" @onclick="() => ShowPosition(local_i)">Click</button>
        }
(int i=0;i<10;i++) { var local_i=i; 点击 } 现在,无论何时单击按钮控件,都会得到正确的值

请搜索一个完整的答案,解释lambada方法如何与用户交互。这就是我

希望这有助于