Blazorのonclickに引数を渡す

Blazor使ってて引っかかったのでメモ。
英語でググれば出ますが、日本語記事があったら便利かなと思いました。

[2020/03/30追記]余談ですがMobileBlazorBindingsではこれではうまくいきません。(どうやればいいんだ)
他の要素が原因でした。<Button>の記法をミスって実装してもCS1503が吐かれるようです。

時間のない方へ

Blazorのボタンクリック関数に引数を渡したい場合はラムダの形を取ればいいです。

参考文献

どういう状況?

直感的に記述するとビルドが通らない

@codeブロック内の関数を呼び出そうと引数を設定しようとした時、直感的に記述してもビルドは通りません。

CS1503

引数 2: は ‘void’ から ‘Microsoft.AspNetCore.Components.EventCallback’ へ変換することはできません。

と自分の環境では出力されました。

対応

前述の通り、ラムダ式として渡してあげるとうまく動きます。

@onclick=”@(s => 関数名(引数))”

sにはMouseEventArgsが入っています。
ラムダ式を使うことによって直接関数を呼び出してるっぽいかな(この辺定かではない)

寄り道:ASP.NET Core Blazor のイベント処理

Atria
  • Atria
  • 大学生個人開発者| AtCoder(茶) / C# / VBA /その他趣味いっぱい