I'd want to make button onclick
function that takes some input.
<button onclick="@test(123, 456)">Check</button> @functions { public void test(int a, int b) { Console.WriteLine(a + b); } }
But for some reason it throws an error:
Argument "1": Cannot convert from void to string
Later I'd want to create those buttons in for loop like
@for (int i = 0; i < 10; i++) { <button onclick="@test(i, 5 * i)">Check</button> }
How can I achieve that?
Blazor will invoke GreetMe when the button is clicked, and the user will see a friendly (if somewhat unimaginative) greeting. Your onclick event handler can optionally accept a MouseEventArgs parameter which Blazor will automatically include when it invokes the handler.
Blazor does not have support to manipulate DOM elements directly, but we can still achieve it by using JavaScript interop. By creating a reference to an element, we can send it as a parameter to the JavaScript method via interop.
Try it with a lambda. You're binding the onclick
to the result of the function rather than the function itself.
@for (int i = 0; i < 10; i++) { var buttonNumber = i; <button @onclick="@(e => test(buttonNumber, 5 * buttonNumber))">Check</button> }
I try this and worked
@onclick="(() => FunctionName(argument))"
like
@onclick="(() => GetDetail(item.UserId))"
Got idea from https://github.com/aspnet/AspNetCore/issues/15956 .
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With