現象
各コンポーネントにおいては、イベントが発火するのに対して、MainLayoutでイベントが発火しない件で少しハマってしまった。
原因
各コンポーネントでは、以下の定義を記載していたが、あまり意識していなかった。
きちんと一行一行理解して記載するのは基本中の基本なので反省……。
各コンポーネント
@rendermode InteractiveServer
この記載によって、対話型レンダーモードのサポートが有効化される。
公式ドキュメントにもある通り、これを有効化しないと、「静的サーバー側レンダリング」となるため、当然ながらイベントは発火しない。
修正方法
今回は、サーバー側のレンダリングモードにする。
レイアウトにおいては、上記@rendermodeを定義できないので、「App.razor」または「Routes.razor」のどちらかに以下の定義を追加する。
App.razor
<Routes @rendermode="InteractiveServer" />
Routes.razor
@rendermode InteractiveServer
なお、どちらに追加した場合でも、最上位に定義することになるため、アプリケーション全体に適用され、各コンポーネントごとに定義する必要はなくなる。