Blazor 如何将参数传递给 onclick 函数?

Blazor how to pass arguments to onclick function?

我想制作需要一些输入的按钮 onclick 功能。

<button onclick="@test(123, 456)">Check</button>

@functions
{
    public void test(int a, int b)
    {
        Console.WriteLine(a + b);
    }
}

但由于某种原因它抛出一个错误:

Argument "1": Cannot convert from void to string

稍后我想在 for 循环中创建这些按钮,例如

@for (int i = 0; i < 10; i++)
{
    <button onclick="@test(i, 5 * i)">Check</button>
}

我怎样才能做到这一点?

用 lambda 试试。您将 onclick 绑定到函数的结果而不是函数本身。

@for (int i = 0; i < 10; i++)
{
    var buttonNumber = i;
    <button @onclick="@(e => test(buttonNumber, 5 * buttonNumber))">Check</button>
}

登录时 onclick 指定它是一个 C# 函数:

@onclick = "@(() => test(i, 5*i))"

我尝试了这个并且成功了

@onclick="(() => FunctionName(argument))"

喜欢

@onclick="(() => GetDetail(item.UserId))"

https://github.com/aspnet/AspNetCore/issues/15956 那里得到灵感。

<input type="button" @onclick="@(() => functionname(paramvalue))" class="....." value="DoSomething" />

以下输入法和按钮输入对我都有效。

<td>
    <input type="button" class="btn btn-primary" value="Delete"
    @onclick="(() => this.DeleteTodoItem(todoItem.Id))"  />
</td>
<td>
    <button class="btn btn-primary" 
    @onclick="(() => this.DeleteTodoItem(todoItem.Id))">Delete</button>
</td>