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

Axe*_*lly 6 c# blazor

我想制作onclick需要输入的按钮功能.

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

@functions
{
    public void test(int a, int b)
    {
        Console.WriteLine(a + b);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Argument "1": Cannot convert from void to string

后来我想在for循环中创建那些按钮

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

我怎样才能做到这一点?

sam*_*lah 35

我尝试这个并工作

@onclick="(() => FunctionName(argument))"
Run Code Online (Sandbox Code Playgroud)

喜欢

@onclick="(() => GetDetail(item.UserId))"
Run Code Online (Sandbox Code Playgroud)

https://github.com/aspnet/AspNetCore/issues/15956得到想法。

  • `@onclick="() =&gt; FunctionName(argument)"` 也可以,不需要额外的括号 (7认同)

bcw*_*ims 20

尝试用lambda.你将onclick绑定到函数的结果而不是函数本身.

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

  • 谢谢,我还发现 Blazor 文档对此很有帮助。https://docs.microsoft.com/en-us/aspnet/core/blazor/event-handling?view=aspnetcore-3.1 (5认同)

小智 10

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

@onclick = "@(() => test(i, 5*i))"
Run Code Online (Sandbox Code Playgroud)