【发布时间】:2019-03-21 10:41:40
【问题描述】:
我目前正在尝试从一些自动生成的按钮调用一个方法,这些按钮是通过一些配置设置的。所以按钮的数量是可配置的。我有如下所示的 Blazor 页面。我的问题是,如果我有 3 个按钮并且我按下一个按钮,那么 ButtonClicked 会被正确调用,但索引始终为 3 - for 语句的 int i 的最终值。我当然希望将按钮的索引传递给函数。一个明显的解决方案是在我自己的组件中包装一个按钮,然后它会采用一个索引参数,这可以传递给一个 buttonclicked 事件,但是如何在不制作我自己的按钮组件的情况下使下面的代码工作?
@inject Navigator navigator
<div class="chooseDiv">
@for (int i = 0; i < Buttons.Count; i++)
{
<button type="button" class="btn btn-primary btn-lg" style="margin:10px" onclick="@((ui) => ButtonClicked(i))">@Buttons[i]</button>
}
</div>
@functions {
[Parameter] List<string> Buttons { get; set; } = new List<string>() { "You forgot to declare your buttons" };
private void ButtonClicked(int index)
{
Console.WriteLine("Button clicked with index:" + index);
navigator.CurrentResult = index;
navigator.Next();
}
}
【问题讨论】:
标签: c# asp.net-core blazor